none
valor anterior RRS feed

  • Pergunta

  • Prezados a Sentença abaixo me retorna as informaçoes que preciso, porem na mesma sentença eu preciso que retorna o valor acumulado anterior,, vejam

    SQL

    SELECT [YEAR] = YEAR (DATABAIXA),
          (FTB1.CODTB1FLX),
          (FTB1.DESCRICAO) AS CLASSE,
       SUM(CASE WHEN YEAR (DATABAIXA-1) = '2011' THEN (VALORBAIXADO) END) AS 'AC ANTERIOR',
           SUM(CASE WHEN MONTH(DATABAIXA) = 1  THEN ISNULL(VALORBAIXADO,0) END) AS 'JANEIRO'
          ,SUM(CASE WHEN MONTH(DATABAIXA) = 2  THEN VALORBAIXADO END) AS 'FEVEREIRO'
          ,SUM(CASE WHEN MONTH(DATABAIXA) = 3  THEN VALORBAIXADO END) AS 'MARÇO'
          ,SUM(CASE WHEN MONTH(DATABAIXA) = 4  THEN VALORBAIXADO END) AS 'ABRIL'
          ,SUM(CASE WHEN MONTH(DATABAIXA) = 5  THEN VALORBAIXADO END) AS 'MAIO'
          ,SUM(CASE WHEN MONTH(DATABAIXA) = 6  THEN VALORBAIXADO END) AS 'JUNHO'
          ,SUM(CASE WHEN MONTH(DATABAIXA) = 7  THEN VALORBAIXADO END) AS 'JULHO'
          ,SUM(CASE WHEN MONTH(DATABAIXA) = 8  THEN VALORBAIXADO END) AS 'AGOSTO'
          ,SUM(CASE WHEN MONTH(DATABAIXA) = 9  THEN VALORBAIXADO END) AS 'SETEMBRO'
          ,SUM(CASE WHEN MONTH(DATABAIXA) = 10 THEN VALORBAIXADO END) AS 'OUTUBRO'
          ,SUM(CASE WHEN MONTH(DATABAIXA) = 11 THEN VALORBAIXADO END) AS 'NOVEMBRO'
          ,SUM(CASE WHEN MONTH(DATABAIXA) = 12 THEN VALORBAIXADO END) AS 'DEZEMBRO'
          ,FLAN.CODCOLIGADA AS COLIGADA$

     

    FROM FLAN
    LEFT  JOIN FTB1 ON  FTB1.CODCOLIGADA = FLAN.CODCOLIGADA AND FTB1.CODTB1FLX = FLAN.CODTB1FLX
    WHERE
    YEAR(DATABAIXA)= '2011'
    AND  FLAN.CODCOLIGADA= '1'

    GROUP BY
    YEAR(DATABAIXA),
    FTB1.DESCRICAO,
    FTB1.CODTB1FLX,
    FLAN.CODCOLIGADA
    ORDER BY COLIGADA$,2

     LINHA EM  destaque e o valor acumulado anterior que estou querendo buscar, essas informaçoes sao do ano de 2011, preciso buscar o que foi pago e baixado no ano anterior.

    resultado

    1.01.001    Salários                              NULL    335320.5000    323452.6100
    1.01.004    Ferias                                NULL    47569.0200    14760.4100
    1.01.005    Rescisoes Contratuais          NULL    37402.3600    14119.7400
    1.01.006    Encargos Sociais - SESI       NULL    6584.7300    6323.1900
    1.01.007    INSS                                 NULL    167950.0800    147749.5000
    1.01.008    FGTS                                 NULL    64596.0400    37684.6500
    1.01.009    Uniformes                          NULL    3925.8600    2538.6600

    SE EU colocar o ano de 2011 eie traz as informaçoes.

    obrigado a todos pela ajuda

    terça-feira, 24 de maio de 2011 17:55

Respostas

  • Ronnie, cole no Management Studio e veja se é isso o que você precisa:

    Declare @TabelaFlan Table (Codigo int identity, Descricao VarChar(20), DataBaixa DateTime, ValorBaixado Float)

    Insert Into @TabelaFlan Values

    ('AAA'  , '01/15/2010', 10) , ('BBB'  , '12/20/2010', 40), -- REGISTROS 2010

    ('CCC1' , '01/01/2011', 20) , ('DDD1' , '01/18/2011', 80), -- JANEIRO 2011

    ('CCC2' , '02/01/2011', 30) , ('DDD2' , '02/18/2011', 80), -- FEVEREIRO 2011

    ('CCC3' , '03/01/2011', 40) , ('DDD3' , '03/18/2011', 80), -- MARÇO 2011

    ('CCC4' , '04/01/2011', 50) , ('DDD4' , '04/18/2011', 80), -- ABRIL 2011

    ('CCC5' , '05/01/2011', 60) , ('DDD5' , '05/18/2011', 80), -- MAIO 2011

    ('CCC6' , '06/01/2011', 70) , ('DDD6' , '06/18/2011', 80), -- JUNHO 2011

    ('CCC7' , '07/01/2011', 80) , ('DDD7' , '07/18/2011', 80), -- JULHO 2011

    ('CCC8' , '08/01/2011', 90) , ('DDD8' , '08/18/2011', 80), -- AGOSTO 2011

    ('CCC9' , '09/01/2011', 100), ('DDD9' , '09/18/2011', 80), -- SETEMBRO 2011

    ('CCC10', '10/01/2011', 110), ('DDD10', '10/18/2011', 80), -- OUTUBRO 2011

    ('CCC11', '11/01/2011', 120), ('DDD11', '11/18/2011', 80), -- NOVEMBRO 2011

    ('CCC12', '12/01/2011', 130), ('DDD12', '12/18/2011', 80), -- DEZEMBRO 2011

    ('EEE'  , '02/01/2012', 200), ('FFF'  , '08/17/2012', 60)  -- REGISTROS 2012

     

    Select

      TotalAnoAnterior  = Sum(Case When (Year(DataBaixa) = Year(GetDate()) - 1) Then IsNull(ValorBaixado, 0) End),

      Janeiro_2011      = Sum(Case When (Month(DataBaixa) = 1)  and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      Fevereiro_2011    = Sum(Case When (Month(DataBaixa) = 2)  and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      Março_2011        = Sum(Case When (Month(DataBaixa) = 3)  and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      Abril_2011        = Sum(Case When (Month(DataBaixa) = 4)  and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      Maio_2011         = Sum(Case When (Month(DataBaixa) = 5)  and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      Junho_2011        = Sum(Case When (Month(DataBaixa) = 6)  and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      Julho_2011        = Sum(Case When (Month(DataBaixa) = 7)  and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      Agosto_2011       = Sum(Case When (Month(DataBaixa) = 8)  and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      Setembro_2011     = Sum(Case When (Month(DataBaixa) = 9)  and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      Outubro_2011      = Sum(Case When (Month(DataBaixa) = 10) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      Novembro_2011     = Sum(Case When (Month(DataBaixa) = 11) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      Dezembro_2011     = Sum(Case When (Month(DataBaixa) = 12) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      TotalAnoPosterior = Sum(Case When (Year(DataBaixa) = Year(GetDate()) + 1) Then IsNull(ValorBaixado, 0) End)

    From

      @TabelaFlan


    Roberson Ferreira


    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    • Marcado como Resposta Ronnie Von quarta-feira, 25 de maio de 2011 11:42
    terça-feira, 24 de maio de 2011 23:07

Todas as Respostas

  • Ronnie, cole no Management Studio e veja se é isso o que você precisa:

    Declare @TabelaFlan Table (Codigo int identity, Descricao VarChar(20), DataBaixa DateTime, ValorBaixado Float)

    Insert Into @TabelaFlan Values

    ('AAA'  , '01/15/2010', 10) , ('BBB'  , '12/20/2010', 40), -- REGISTROS 2010

    ('CCC1' , '01/01/2011', 20) , ('DDD1' , '01/18/2011', 80), -- JANEIRO 2011

    ('CCC2' , '02/01/2011', 30) , ('DDD2' , '02/18/2011', 80), -- FEVEREIRO 2011

    ('CCC3' , '03/01/2011', 40) , ('DDD3' , '03/18/2011', 80), -- MARÇO 2011

    ('CCC4' , '04/01/2011', 50) , ('DDD4' , '04/18/2011', 80), -- ABRIL 2011

    ('CCC5' , '05/01/2011', 60) , ('DDD5' , '05/18/2011', 80), -- MAIO 2011

    ('CCC6' , '06/01/2011', 70) , ('DDD6' , '06/18/2011', 80), -- JUNHO 2011

    ('CCC7' , '07/01/2011', 80) , ('DDD7' , '07/18/2011', 80), -- JULHO 2011

    ('CCC8' , '08/01/2011', 90) , ('DDD8' , '08/18/2011', 80), -- AGOSTO 2011

    ('CCC9' , '09/01/2011', 100), ('DDD9' , '09/18/2011', 80), -- SETEMBRO 2011

    ('CCC10', '10/01/2011', 110), ('DDD10', '10/18/2011', 80), -- OUTUBRO 2011

    ('CCC11', '11/01/2011', 120), ('DDD11', '11/18/2011', 80), -- NOVEMBRO 2011

    ('CCC12', '12/01/2011', 130), ('DDD12', '12/18/2011', 80), -- DEZEMBRO 2011

    ('EEE'  , '02/01/2012', 200), ('FFF'  , '08/17/2012', 60)  -- REGISTROS 2012

     

    Select

      TotalAnoAnterior  = Sum(Case When (Year(DataBaixa) = Year(GetDate()) - 1) Then IsNull(ValorBaixado, 0) End),

      Janeiro_2011      = Sum(Case When (Month(DataBaixa) = 1)  and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      Fevereiro_2011    = Sum(Case When (Month(DataBaixa) = 2)  and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      Março_2011        = Sum(Case When (Month(DataBaixa) = 3)  and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      Abril_2011        = Sum(Case When (Month(DataBaixa) = 4)  and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      Maio_2011         = Sum(Case When (Month(DataBaixa) = 5)  and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      Junho_2011        = Sum(Case When (Month(DataBaixa) = 6)  and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      Julho_2011        = Sum(Case When (Month(DataBaixa) = 7)  and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      Agosto_2011       = Sum(Case When (Month(DataBaixa) = 8)  and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      Setembro_2011     = Sum(Case When (Month(DataBaixa) = 9)  and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      Outubro_2011      = Sum(Case When (Month(DataBaixa) = 10) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      Novembro_2011     = Sum(Case When (Month(DataBaixa) = 11) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      Dezembro_2011     = Sum(Case When (Month(DataBaixa) = 12) and (Year(DataBaixa) = Year(GetDate())) Then IsNull(ValorBaixado, 0) End),

      TotalAnoPosterior = Sum(Case When (Year(DataBaixa) = Year(GetDate()) + 1) Then IsNull(ValorBaixado, 0) End)

    From

      @TabelaFlan


    Roberson Ferreira


    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    • Marcado como Resposta Ronnie Von quarta-feira, 25 de maio de 2011 11:42
    terça-feira, 24 de maio de 2011 23:07
  • Roberson Ferreira, Parabens e muito obrigado ficou melhor que eu imagina. valeu mesmo.
    quarta-feira, 25 de maio de 2011 11:42
  • Ronnie,

    Somente como exemplo, vou postar este código:

     

    SELECT CODREPRESENTANTE,
               CASE LINHAPRODUTO
                WHEN '1' THEN '1 - BALÃO'
                WHEN '2' THEN '2 - LUVAS DOMÉSTICAS'
                WHEN '3' THEN '3 - LUVAS PROCEDIMENTOS'
                WHEN '4' THEN '4 - LUVAS CIRÚRGICAS'
                WHEN '5' THEN '5 - PROPAGANDA'
               END AS LINHAPRODUTO,
               ANO2000=(CASE WHEN ANO=2000 THEN ROUND(SUM(VLFATURADO),2) ELSE 0 END),
               ANO2001=(CASE WHEN ANO=2001 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               ANO2002=(CASE WHEN ANO=2002 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               ANO2003=(CASE WHEN ANO=2003 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               ANO2004=(CASE WHEN ANO=2004 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA1_ANO2000=(CASE WHEN ANO=2000 AND LINHAPRODUTO=1 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA2_ANO2000=(CASE WHEN ANO=2000 AND LINHAPRODUTO=2 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA3_ANO2000=(CASE WHEN ANO=2000 AND LINHAPRODUTO=3 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA4_ANO2000=(CASE WHEN ANO=2000 AND LINHAPRODUTO=4 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA5_ANO2000=(CASE WHEN ANO=2000 AND LINHAPRODUTO=5 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA1_ANO2001=(CASE WHEN ANO=2001 AND LINHAPRODUTO=1 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA2_ANO2001=(CASE WHEN ANO=2001 AND LINHAPRODUTO=2 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA3_ANO2001=(CASE WHEN ANO=2001 AND LINHAPRODUTO=3 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA4_ANO2001=(CASE WHEN ANO=2001 AND LINHAPRODUTO=4 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA5_ANO2001=(CASE WHEN ANO=2001 AND LINHAPRODUTO=5 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA1_ANO2002=(CASE WHEN ANO=2002 AND LINHAPRODUTO=1 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA2_ANO2002=(CASE WHEN ANO=2002 AND LINHAPRODUTO=2 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA3_ANO2002=(CASE WHEN ANO=2002 AND LINHAPRODUTO=3 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA4_ANO2002=(CASE WHEN ANO=2002 AND LINHAPRODUTO=4 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA5_ANO2002=(CASE WHEN ANO=2002 AND LINHAPRODUTO=5 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA1_ANO2003=(CASE WHEN ANO=2003 AND LINHAPRODUTO=1 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA2_ANO2003=(CASE WHEN ANO=2003 AND LINHAPRODUTO=2 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA3_ANO2003=(CASE WHEN ANO=2003 AND LINHAPRODUTO=3 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA4_ANO2003=(CASE WHEN ANO=2003 AND LINHAPRODUTO=4 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA5_ANO2003=(CASE WHEN ANO=2003 AND LINHAPRODUTO=5 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA1_ANO2004=(CASE WHEN ANO=2004 AND LINHAPRODUTO=1 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA2_ANO2004=(CASE WHEN ANO=2004 AND LINHAPRODUTO=2 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA3_ANO2004=(CASE WHEN ANO=2004 AND LINHAPRODUTO=3 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA4_ANO2004=(CASE WHEN ANO=2004 AND LINHAPRODUTO=4 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END),
               LINHA5_ANO2004=(CASE WHEN ANO=2004 AND LINHAPRODUTO=5 THEN ROUND(SUM(VLFATURADO/100),2) ELSE 0 END)
    FROM HISTORVENDAS
    GROUP BY CODREPRESENTANTE, LINHAPRODUTO, ANO
    ORDER BY CODREPRESENTANTE, LINHAPRODUTO, ANO


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    quarta-feira, 8 de junho de 2011 17:54