2016-04-07 7 views
1

Ich habe select-Anweisung wie folgt:Anzeige Summe aus dem Vorjahr

select [Fiscal Year], sum([value]), 
     YEAR(DATEADD(year,-1,[Fiscal Year])) as previous_year 
    from [table1] 
    group by [Fiscal Year] 

Wie nach Spalte hinzufügen previous_year, sum([value]) aus dem Vorjahr?

enter image description here

+1

['LAG/LEAD'] (https://msdn.microsoft.com/en-us/library/hh231256.aspx) wenn SQL Server 2012+, selbst beitreten, wenn niedriger – lad2025

+0

@ 4est Froh, um zu helfen ! – DhruvJoshi

Antwort

1

Bitte versuchen Sie die folgenden Abfrage für SQL 2008

select t1.[Fiscal Year],t1.Value,(t1.[Fiscal Year]-1) [previous_year],t2.Value [previous_value] 
from 
( select [Fiscal Year], sum([value]) value 
    from [table1] 
    group by [Fiscal Year] 
)t1 
LEFT JOIN 
( 
select [Fiscal Year], sum([value]) value 
    from [table1] 
    group by [Fiscal Year] 
)t2 
ON t1.[Fiscal Year]=t2.[Fiscal Year]+1 

SQL demo link

0

Wenn Sie SQL Server verwenden 2012+ Sie LAG verwenden können, um den Wert der vorherigen Reihe zu bekommen:

;with cte as (
    select [Fiscal Year], sum([value]) AS value, 
    from [table1] 
    group by [Fiscal Year] 
) 
select [Fiscal Year], value, 
     [Fiscal Year] - 1, lag(value) over (order by [Fiscal Year]) as prev_value 
from cte 
+0

es ist SQL Server 2008: /, es ist eine andere Möglichkeit, es zu tun? – 4est

0
--to prepare the environment, let said this is your table 
declare @table table 
(
    fiscalYr integer, 
    Value integer, 
    previousyr integer, 
    prevValue integer 
) 

--to prepare the value, let said these are your value 
insert into @table values (2014,165,2013,0); 
insert into @table values (2015,179,2014,0); 
insert into @table values (2016,143,2015,0); 

--the SQL 
select A.fiscalYr,A.Value,A.previousyr, B.Value 
from @table A left join 
@table B on B.fiscalYr = A.previousyr 

Dies ist die Antwort, die ich

fiscalYr bekam | Wert | PrevYr | Wert

2014 | 165 | 2013 | NULL

2015 | 179 | 2014 | 165

2016 | 143 | 2015 | 179