Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 SQL Server 2005 Forums
 Transact-SQL (2005)
 Simplify get variable

Author  Topic 

waterduck
Aged Yak Warrior

982 Posts

Posted - 2009-08-14 : 03:51:45
Hi, is the following the simplify? still can be more simplify?

SELECT	@a1=SUM(CASE WHEN date >=DATEADD(MONTH, +0, @startdate) and date<DATEADD(MONTH, +1, @startdate) then a else 0 END),
@a2=SUM(CASE WHEN date >=DATEADD(MONTH, +1, @startdate) and date<DATEADD(MONTH, +2, @startdate) then a else 0 END),
@a3=SUM(CASE WHEN date >=DATEADD(MONTH, +2, @startdate) and date<DATEADD(MONTH, +3, @startdate) then a else 0 END),
@a4=SUM(CASE WHEN date >=DATEADD(MONTH, +3, @startdate) and date<DATEADD(MONTH, +4, @startdate) then a else 0 END),
@a5=SUM(CASE WHEN date >=DATEADD(MONTH, +4, @startdate) and date<DATEADD(MONTH, +5, @startdate) then a else 0 END),
@a6=SUM(CASE WHEN date >=DATEADD(MONTH, +5, @startdate) and date<DATEADD(MONTH, +6, @startdate) then a else 0 END),
@a7=SUM(CASE WHEN date >=DATEADD(MONTH, +6, @startdate) and date<DATEADD(MONTH, +7, @startdate) then a else 0 END),
@a8=SUM(CASE WHEN date >=DATEADD(MONTH, +7, @startdate) and date<DATEADD(MONTH, +8, @startdate) then a else 0 END),
@a9=SUM(CASE WHEN date >=DATEADD(MONTH, +8, @startdate) and date<DATEADD(MONTH, +9, @startdate) then a else 0 END),
@a10=SUM(CASE WHEN date >=DATEADD(MONTH, +9, @startdate) and date<DATEADD(MONTH, +10, @startdate) then a else 0 END),
@a11=SUM(CASE WHEN date >=DATEADD(MONTH, +10, @startdate) and date<DATEADD(MONTH, +11, @startdate) then a else 0 END),
@a12=SUM(CASE WHEN date >=DATEADD(MONTH, +11, @startdate) and date<DATEADD(MONTH, +12, @startdate) then a else 0 END),
@ta = SUM(a),
@b1=SUM(CASE WHEN date >=DATEADD(MONTH, +0, @startdate) and date<DATEADD(MONTH, +1, @startdate) then b else 0 END),
@b2=SUM(CASE WHEN date >=DATEADD(MONTH, +1, @startdate) and date<DATEADD(MONTH, +2, @startdate) then b else 0 END),
@b3=SUM(CASE WHEN date >=DATEADD(MONTH, +2, @startdate) and date<DATEADD(MONTH, +3, @startdate) then b else 0 END),
@b4=SUM(CASE WHEN date >=DATEADD(MONTH, +3, @startdate) and date<DATEADD(MONTH, +4, @startdate) then b else 0 END),
@b5=SUM(CASE WHEN date >=DATEADD(MONTH, +4, @startdate) and date<DATEADD(MONTH, +5, @startdate) then b else 0 END),
@b6=SUM(CASE WHEN date >=DATEADD(MONTH, +5, @startdate) and date<DATEADD(MONTH, +6, @startdate) then b else 0 END),
@b7=SUM(CASE WHEN date >=DATEADD(MONTH, +6, @startdate) and date<DATEADD(MONTH, +7, @startdate) then b else 0 END),
@b8=SUM(CASE WHEN date >=DATEADD(MONTH, +7, @startdate) and date<DATEADD(MONTH, +8, @startdate) then b else 0 END),
@b9=SUM(CASE WHEN date >=DATEADD(MONTH, +8, @startdate) and date<DATEADD(MONTH, +9, @startdate) then b else 0 END),
@b10=SUM(CASE WHEN date >=DATEADD(MONTH, +9, @startdate) and date<DATEADD(MONTH, +10, @startdate) then b else 0 END),
@b11=SUM(CASE WHEN date >=DATEADD(MONTH, +10, @startdate) and date<DATEADD(MONTH, +11, @startdate) then b else 0 END),
@b12=SUM(CASE WHEN date >=DATEADD(MONTH, +11, @startdate) and date<DATEADD(MONTH, +12, @startdate) then b else 0 END),
@tb = SUM(b),
@c1=SUM(CASE WHEN date >=DATEADD(MONTH, +0, @startdate) and date<DATEADD(MONTH, +1, @startdate) then c else 0 END),
@c2=SUM(CASE WHEN date >=DATEADD(MONTH, +1, @startdate) and date<DATEADD(MONTH, +2, @startdate) then c else 0 END),
@c3=SUM(CASE WHEN date >=DATEADD(MONTH, +2, @startdate) and date<DATEADD(MONTH, +3, @startdate) then c else 0 END),
@c4=SUM(CASE WHEN date >=DATEADD(MONTH, +3, @startdate) and date<DATEADD(MONTH, +4, @startdate) then c else 0 END),
@c5=SUM(CASE WHEN date >=DATEADD(MONTH, +4, @startdate) and date<DATEADD(MONTH, +5, @startdate) then c else 0 END),
@c6=SUM(CASE WHEN date >=DATEADD(MONTH, +5, @startdate) and date<DATEADD(MONTH, +6, @startdate) then c else 0 END),
@c7=SUM(CASE WHEN date >=DATEADD(MONTH, +6, @startdate) and date<DATEADD(MONTH, +7, @startdate) then c else 0 END),
@c8=SUM(CASE WHEN date >=DATEADD(MONTH, +7, @startdate) and date<DATEADD(MONTH, +8, @startdate) then c else 0 END),
@c9=SUM(CASE WHEN date >=DATEADD(MONTH, +8, @startdate) and date<DATEADD(MONTH, +9, @startdate) then c else 0 END),
@c10=SUM(CASE WHEN date >=DATEADD(MONTH, +9, @startdate) and date<DATEADD(MONTH, +10, @startdate) then c else 0 END),
@c11=SUM(CASE WHEN date >=DATEADD(MONTH, +10, @startdate) and date<DATEADD(MONTH, +11, @startdate) then c else 0 END),
@c12=SUM(CASE WHEN date >=DATEADD(MONTH, +11, @startdate) and date<DATEADD(MONTH, +12, @startdate) then c else 0 END),
@tc = SUM(c)
FROM @Tempfun
WHERE date >= '20090101' and date <= '20091231'



Hope can help...but advise to wait pros with confirmation...

SwePeso
Patron Saint of Lost Yaks

30421 Posts

Posted - 2009-08-14 : 04:24:19
This?
SELECT		DATEPART(MONTH, [Date]) AS theMonth,
SUM(a) AS a,
SUM(b) AS b,
SUM(c) AS c
FROM @TempFun
WHERE [Date] >= '20090101'
AND [Date] < '20100101'
GROUP BY DATEPART(MONTH, [Date])
ORDER BY DATEPART(MONTH, [Date])



N 56°04'39.26"
E 12°55'05.63"
Go to Top of Page

waterduck
Aged Yak Warrior

982 Posts

Posted - 2009-08-14 : 04:28:04
erm....i need the value stored in the variable....btw long time din get yours reply xD


Hope can help...but advise to wait pros with confirmation...
Go to Top of Page

khtan
In (Som, Ni, Yak)

17689 Posts

Posted - 2009-08-14 : 04:52:35
these will not be so messy . .


select @a1 = sum(case when mth = 0 then a else 0 end),
@a2 = sum(case when mth = 1 then a else 0 end),
. . .
@ta = sum(a)
. . .
from
(
select mth = datediff(month, @startdate, [date]),
a = sum(a),
b = sum(b),
c = sum(c)
from @Tempfun
WHERE [date] >= '20090101' and [date] <= '20091231'
group by datediff(month, @startdate, [date])
) a



KH
[spoiler]Time is always against us[/spoiler]

Go to Top of Page

khtan
In (Som, Ni, Yak)

17689 Posts

Posted - 2009-08-14 : 04:53:21

forgot to hit the refresh button


KH
[spoiler]Time is always against us[/spoiler]

Go to Top of Page

waterduck
Aged Yak Warrior

982 Posts

Posted - 2009-08-14 : 05:01:06
sifu...where u run to?looks like very busy


Hope can help...but advise to wait pros with confirmation...
Go to Top of Page

khtan
In (Som, Ni, Yak)

17689 Posts

Posted - 2009-08-14 : 05:15:02
the usual, basically just around 3 points.

Home - School - Office

all permutation


KH
[spoiler]Time is always against us[/spoiler]

Go to Top of Page

waterduck
Aged Yak Warrior

982 Posts

Posted - 2009-08-14 : 05:24:24
@.@ 24? husband


Hope can help...but advise to wait pros with confirmation...
Go to Top of Page
   

- Advertisement -