2016-04-27 4 views
1

SQL 2008 R2を使用しています。私は、次の列を持つ小さなテーブルがあります。SQLヘルプの計算天びんのオープンとクローズ

日 位置1 LOCATION2 がLocation3を

そして、それは前から終了バランスを等しくした後、

オープニングバランス= 0から始まり、これらの2つの列を計算するために探して日 期末残高=期首残高+場所1 + 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

日付はちょうど日時であり、実際には2010年1月1日のように読み込まれます。場所は単なる浮きです。残念ながら私は2012+にアップグレードできません:(ありがとうございました – Jay

答えて

3

[OK]をずさんなテーブルの一例をありがとう事前に

**謝罪、あなたは(出力のみなしテーブルスキーマを)提供された情報から、このクエリはあなたのために働くかもしれない:

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

関連する問題