2016-04-27 58 views
1

我正在使用SQL 2008 R2。我有一個小桌子有以下的列:SQL幫助計算開立和結束餘額列

日期 LOCATION1 LOCATION2 LOCATION3

,展望計算這些2列

期初餘額=從0開始,這等於從分組結束後的餘額天 期末餘額=期初餘額+ LOCATION1 + LOCATION2 + LOCATION3

所以我基本上看吐了這一點到報告:

DATE | OPENING_BALANCE | LOC1 | LOC2 | LOC3 | CLOSING_BALANCE 
---------------------------------------------------------------------------- 
1/1  $0.00    $1,000 $1,000  $1,000  $3,000 
1/2  $3,000    $2,000 $2,000  $1,000  $8,000 
1/3  $8,000   ($1,000) ($4,000)  $500   $3,500 
1/4  $3,500   $10,000 ($5,000)  $20,000  $28,500 
1/5  $28,500 

有沒有簡單的方法來計算這2列?幫助讚賞!在此先感謝

**道歉馬虎表例如

+0

什麼數據類型是日期,地點1,地點2。 LOCATION3? –

+0

有沒有辦法升級到sql server 2012+? –

+0

日期只是一個日期時間,例如,它的確如同1/1/2016。這些地點只是漂浮物。不幸的是,我無法升級到2012+ :(謝謝 – Jay

回答

3

好了,根據您所提供(只輸出和無表模式)的信息,該查詢可能會爲你工作:

WITH cte AS 
(
SELECT 
    [Date], 
    Loc1 = Location1, 
    Loc2 = Location2, 
    Loc3 = Location3, 
    DayTotal = Location1 + Location2 + Location3, 
    ROWNUM = ROW_NUMBER() OVER (ORDER BY [Date]) 
FROM 
    tbl 
) 
SELECT 
    DATE = c1.[Date], 
    OPENING_BALANCE = ISNULL(c2.OpeningDayTotals, 0), 
    LOC1 = c1.Loc1, 
    Loc2 = c1.Loc2, 
    Loc3 = c1.Loc3, 
    CLOSING_BALANCE = ISNULL(c2.OpeningDayTotals, 0) + c1.DayTotal 
FROM 
    cte c1 
OUTER APPLY 
(
    SELECT 
     OpeningDayTotals = SUM(c2.DayTotal) 
    FROM 
     cte c2 
    WHERE 
     c1.ROWNUM > c2.ROWNUM 
) AS c2 
+0

這看起來像它的工作完美!謝謝你 – Jay