本文发表在 rolia.net 枫下论坛Tested in DB2:
Select
company,
customer_id,
sum(
Case year
when year(current date) then
(case month(current date)
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
else m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + m11 + m12
end)
else 0
end
) as curr_ytd,
sum(
Case year
when year(current date) - 1 then
case month(current date)
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
else m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + m11 + m12
end
else 0
end
) as prev_ytd
from db2devl.yourtable
where year between year(current date) -1 and year(current date)
Group by company, customer_id更多精彩文章及讨论,请光临枫下论坛 rolia.net
Select
company,
customer_id,
sum(
Case year
when year(current date) then
(case month(current date)
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
else m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + m11 + m12
end)
else 0
end
) as curr_ytd,
sum(
Case year
when year(current date) - 1 then
case month(current date)
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
else m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + m11 + m12
end
else 0
end
) as prev_ytd
from db2devl.yourtable
where year between year(current date) -1 and year(current date)
Group by company, customer_id更多精彩文章及讨论,请光临枫下论坛 rolia.net