none
Mês Dinâmico RRS feed

  • Pergunta

  • Tenho essa query abaixo
    preciso trazer o nome mês dimanico dependendo da escolha do usuário.
    M1 é o mes atual
    M2 e o mes passado  e sucessivamente 

    a query que montei

    SELECT
    KPI,
    M12  = COUNT(CASE WHEN MES=12 THEN matricula END),
    M11  = COUNT(CASE WHEN MES=11 THEN matricula END),
    M10  = COUNT(CASE WHEN MES=10 THEN matricula END),
    M9   = COUNT(CASE WHEN MES=9  THEN matricula END),
    M8   = COUNT(CASE WHEN MES=8  THEN matricula END),
    M7   = COUNT(CASE WHEN MES=7  THEN matricula END),
    M6   = COUNT(CASE WHEN MES=6  THEN matricula END),
    M5   = COUNT(CASE WHEN MES=5  THEN matricula END),
    M4   = COUNT(CASE WHEN MES=4  THEN matricula END),
    M3   = COUNT(CASE WHEN MES=3  THEN matricula END),
    M2   = COUNT(CASE WHEN MES=2  THEN matricula END),
    M1   = COUNT(CASE WHEN MES=1  THEN matricula END),
    _12M = COUNT(CASE WHEN mes between 1 and @mes and ano = @ano THEN matricula END),
    _YTD = COUNT(CASE WHEN (ano = @ano-1 and mes between @mes and 12) OR (ano = @ano and mes between 1 and @mes)  THEN matricula END)
    FROM
    [MaquinaPadrao].[dbo].[tb_hse_dados_indicador]
    WHERE 
    KPI = @kpi
    GROUP BY KPI

    quinta-feira, 30 de novembro de 2017 19:06

Respostas

  • Tente dessa forma:

    SELECT 
    DATENAME(MONTH, GETDATE()) AS M1,
    DATENAME(MONTH, DATEADD(MM, -1,GETDATE())) AS M2,
    ...
    DATENAME(MONTH, DATEADD(MM, -11,GETDATE())) AS M12


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    quinta-feira, 30 de novembro de 2017 20:07

Todas as Respostas

  • Tente dessa forma:

    SELECT 
    DATENAME(MONTH, GETDATE()) AS M1,
    DATENAME(MONTH, DATEADD(MM, -1,GETDATE())) AS M2,
    ...
    DATENAME(MONTH, DATEADD(MM, -11,GETDATE())) AS M12


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    quinta-feira, 30 de novembro de 2017 20:07
  • Deleted
    quinta-feira, 30 de novembro de 2017 20:13
  • Marco, você não pode resolver isso na aplicação? É que definir nome variável para colunas somente com SQL dinâmico.

    e-mail       José Diz     Belo Horizonte, MG - Brasil


    José,

    Concordo com sua observação, fazendo esta transferência de responsabilidade fica mais "elegante" e teoricamente correto a aplicação fazer esta análise e papel de identificar o mês ao invés do SQL Server.


    Pedro Antonio Galvao Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quinta-feira, 30 de novembro de 2017 22:12