Usuário com melhor resposta
valor anterior

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$,2LINHA 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.6600SE EU colocar o ano de 2011 eie traz as informaçoes.
obrigado a todos pela ajuda
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
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
-
-
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]