none
Mes a Mes RRS feed

  • Pergunta

  • Tenho o período que traz o mês ok

    quando colocar o usuário solicitar o mês precisa traz os -12 meses pra traz

    fiz assim mais precisa arrumar para trazer os últimos meses.

    SELECT
       --      [Indicadores]=
          --   CASE
                -- WHEN FAMILIA  = 'P' THEN 'Previsto'
                -- WHEN FAMILIA  = 'r' THEN 'Realizado'
             --END,
             --[Tipo]=
          --   CASE
                -- WHEN FAMILIA  = 'P' THEN 'Previsto'
                -- WHEN FAMILIA  = 'r' THEN 'Realizado'
             --END,
             '' as Indicadores    ,
             '' as Tipo            ,
                            COUNT(CASE WHEN ((DatAct BETWEEN '20170101' AND '20170131')) THEN ISNULL(tipdan,0)ELSE 0 END)AS JAN_,
                            COUNT(CASE WHEN ((DatAct BETWEEN '20170201' AND '20170228')) THEN ISNULL(tipdan,0)ELSE 0 END)AS FEV_,
                            COUNT(CASE WHEN ((DatAct BETWEEN '20170301' AND '20170331')) THEN ISNULL(tipdan,0)ELSE 0 END)AS MAR_,
                            COUNT(CASE WHEN ((DatAct BETWEEN '20170401' AND '20170430')) THEN ISNULL(tipdan,0)ELSE 0 END)AS ABR_,
                            COUNT(CASE WHEN ((DatAct BETWEEN '20170501' AND '20170531')) THEN ISNULL(tipdan,0)ELSE 0 END)AS MAI_,
                            COUNT(CASE WHEN ((DatAct BETWEEN '20170601' AND '20170630')) THEN ISNULL(tipdan,0)ELSE 0 END)AS JUN_,
                            COUNT(CASE WHEN ((DatAct BETWEEN '20170701' AND '20170731')) THEN ISNULL(tipdan,0)ELSE 0 END)AS JUL_,
                            COUNT(CASE WHEN ((DatAct BETWEEN '20170801' AND '20170831')) THEN ISNULL(tipdan,0)ELSE 0 END)AS AGO_,
                            COUNT(CASE WHEN ((DatAct BETWEEN '20170901' AND '20170930')) THEN ISNULL(tipdan,0)ELSE 0 END)AS SET_,
                            COUNT(CASE WHEN ((DatAct BETWEEN '20171001' AND '20171031')) THEN ISNULL(tipdan,0)ELSE 0 END)AS OUT_,
                            COUNT(CASE WHEN ((DatAct BETWEEN '20171101' AND '20171130')) THEN ISNULL(tipdan,0)ELSE 0 END)AS NOV_,
                            COUNT(CASE WHEN ((DatAct BETWEEN '20171201' AND '20171231')) THEN ISNULL(tipdan,0)ELSE 0 END)AS DEZ_

                            [R086OCO]

    quinta-feira, 16 de novembro de 2017 16:09

Respostas

Todas as Respostas

  • Deleted
    quinta-feira, 16 de novembro de 2017 20:31
  • Marco,

    Você deseja que cada mês seja contabilizado em uma condição do seu bloco Case? É isso?

    Mas neste caso, pensando um pouco mais a frente, qual é o volume de linhas que esta tabela possui? Você realmente precisa ter todos os dados integrados no mesmo Select?

    Será que se pensarmos em criar Selects distintos e posteriormente através do operador Union ou Union All estabelecermos a união dos dados, não seria melhor para você entender o que precisa e posteriormente ter uma melhor performance.

    Poderia descrever um pouco mais esta sumarização dos dados?


    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]

    sexta-feira, 17 de novembro de 2017 10:47