本文发表在 rolia.net 枫下论坛declare @curr_year smallint
declare @prev_year smallint
declare @m smallint
set @curr_year = Year(GetDate())
set @prev_year = @curr_year -1
set @m = Month(GetDate())
Select
company,
customer,
curr_ytd = sum(Case [year] When @curr_year Then ytd End),
prev_ytd = Sum(Case [year] When @prev_year Then ytd End)
from
(
Select
company,
customer,
[year],
ytd = case @m
when 1 then m1
when 2 then m1 + m2
when 3 then m1 + m2 + m3
when 4 then m1 + m2 + m3 + m4
when 5 then m1 + m2 + m3 + m4 + m5
when 6 then m1 + m2 + m3 + m4 + m5 + m6
when 7 then m1 + m2 + m3 + m4 + m5 + m6 + m7
when 8 then m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8
when 9 then m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9
when 10 then m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10
when 11 then m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + m11
When 12 Then m1 + m2+ m3 + m4 + m5+ m6 + m7 + m8 + m9 + m10 + m11 + m12
Else 0
end
from t1
) as ytd_tbl
Group by company, customer更多精彩文章及讨论,请光临枫下论坛 rolia.net
declare @prev_year smallint
declare @m smallint
set @curr_year = Year(GetDate())
set @prev_year = @curr_year -1
set @m = Month(GetDate())
Select
company,
customer,
curr_ytd = sum(Case [year] When @curr_year Then ytd End),
prev_ytd = Sum(Case [year] When @prev_year Then ytd End)
from
(
Select
company,
customer,
[year],
ytd = case @m
when 1 then m1
when 2 then m1 + m2
when 3 then m1 + m2 + m3
when 4 then m1 + m2 + m3 + m4
when 5 then m1 + m2 + m3 + m4 + m5
when 6 then m1 + m2 + m3 + m4 + m5 + m6
when 7 then m1 + m2 + m3 + m4 + m5 + m6 + m7
when 8 then m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8
when 9 then m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9
when 10 then m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10
when 11 then m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + m11
When 12 Then m1 + m2+ m3 + m4 + m5+ m6 + m7 + m8 + m9 + m10 + m11 + m12
Else 0
end
from t1
) as ytd_tbl
Group by company, customer更多精彩文章及讨论,请光临枫下论坛 rolia.net