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年的前一個月的結束奧姆真理教價值將等於下個月開始的奧姆真理教,但是當涉及到2009年的dec結束奧姆真理教沒有分配給2010年1月開始奧姆。
這是我需要修復的錯誤。
如果TimePeriod僅包含月份第一天午夜的日期 – Andomar 2010-10-26 22:38:52
@Adomar - 是的,那是真的,但我試圖限定它加入「這是假設你不關心時間」。但我更新了我的答案以解釋時間。 – AGoodDisplayName 2010-10-26 22:45:18
@AGoodDisplayName:這將用於比較幾天,但問題是關於比較幾個月。所以你需要一個'fn_MonthOnly' :) – Andomar 2010-10-26 22:49:14