【发布时间】:2010-10-26 22:23:13
【问题描述】:
select datepart(month,s1.Timeperiod) as monthofaum,
datepart(YEAR,s1.Timeperiod) as Yearofaum,
ISNULL(s2.endingAum,0) as Starting_Aum,
s1.endingAum as Ending_Aum
from #temp_1 s1
left outer join (select * from #temp_1)s2
on month(s1.Timeperiod) = dateadd(D,1,month(s2.Timeperiod))
这非常适合按月计算,但假设我需要更改查询以获取基于年份的结果 - 我应该在哪里进行更改?
Example
monthofaum Yearofaum Starting_Aum Ending_Aum
----------- ----------- --------------------- ---------------------
11 2009 0.00 0.00
12 2009 0.00 1059594254.86
1 2010 0.00 1083195051.98
2 2010 1083195051.98 1125314638.64
3 2010 1125314638.64 1212355911.70
4 2010 1212355911.70 1270374634.62
5 2010 1270374634.62 1265193377.27
6 2010 1265193377.27 1260776179.02
7 2010 1260776179.02 2599205697.44
8 2010 2599205697.44 1323838670.57
如果您查看数据可以看到,对于 2010 年,上个月的 Ending Aum 值将等于下个月的 Starting Aum,但对于 2009 年,dec Ending Aum 未分配给 2010 年 1 月的期初 Aum .
这是我需要修复的错误。
【问题讨论】:
标签: sql sql-server sql-server-2005 tsql