本文发表在 rolia.net 枫下论坛/*
method 2 - use case statement
optimized by using less select statements
*/
declare @m1 int
declare @m2 int
declare @m3 int
declare @m4 int
declare @m5 int
declare @m6 int
declare @m7 int
declare @m8 int
declare @m9 int
declare @m10 int
declare @m11 int
declare @m12 int
Select @m1=m1, @m2=m2, @m3=m3, @m4=m4, @m5=m5, @m6=m6,
@m7=m7, @m8=m8, @m9=m9, @m10=m10, @m11=m11, @m12=m12 From <your table>
Select @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
End
Print 'YTD for month ' + cast (@m to varchar(20)) + ' = ' + cast (@YTD as varchar (20))更多精彩文章及讨论,请光临枫下论坛 rolia.net
method 2 - use case statement
optimized by using less select statements
*/
declare @m1 int
declare @m2 int
declare @m3 int
declare @m4 int
declare @m5 int
declare @m6 int
declare @m7 int
declare @m8 int
declare @m9 int
declare @m10 int
declare @m11 int
declare @m12 int
Select @m1=m1, @m2=m2, @m3=m3, @m4=m4, @m5=m5, @m6=m6,
@m7=m7, @m8=m8, @m9=m9, @m10=m10, @m11=m11, @m12=m12 From <your table>
Select @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
End
Print 'YTD for month ' + cast (@m to varchar(20)) + ' = ' + cast (@YTD as varchar (20))更多精彩文章及讨论,请光临枫下论坛 rolia.net