2016-10-20 8 views
0

SQL Server 2012バージョンで実行中の値を計算する方法。 サンプルデータです。SQL Server 2012の年間ベースの稼働合計を計算する方法

CREATE TABLE #RollingTotalsExample 
(
    [Date]  DATE PRIMARY KEY 
    ,[Value] INT 
); 

INSERT INTO #RollingTotalsExample 
SELECT '2011-01-01',626 
UNION ALL SELECT '2011-02-01',231 UNION ALL SELECT '2011-03-01',572 
UNION ALL SELECT '2011-04-01',775 
UNION ALL SELECT '2011-12-01',361 UNION ALL SELECT '2012-01-01',461 
UNION ALL SELECT '2012-02-01',928 UNION ALL SELECT '2012-03-01',855 
UNION ALL SELECT '2012-04-01',605 
UNION ALL SELECT '2012-12-01',26; 

SELECT * FROM #RollingTotalsExample; 

予想される出力:

Date Value Runing Value 
1/01/2011 626 626 
1/02/2011 231 857 
1/03/2011 572 1429 
1/04/2011 775 2204 
1/12/2011 361 2565 
1/01/2012 461 461 
1/02/2012 928 1389 
1/03/2012 855 2244 
1/04/2012 605 2849 
1/12/2012 26 2875 

値がベースの年のために計算する必要があります実行しています。

+0

のように試してみました。 'select * fromrolroltotalsexample r(runvalue)'(runvalue) 'を選択すると、 – ZLK

答えて

0

ウィンドウ機能を使用します。 Year(Date)によってパーティションを分割すると、年が変更され、注文がdateになると、合計で日付が計算されます。

SELECT Date, Value, 
SUM(Value) OVER (PARTITION BY YEAR(DATE) ORDER BY DATE) AS RunningValue 
FROM #RollingTotalsExample 
0

私はあなたが望んでいた場合は、クロスが適用されます使用することができ、この

SELECT A.DATE, A.VALUE, (SELECT SUM(B.VALUE) 
         FROM #ROLLINGTOTALSEXAMPLE B 
         WHERE B.DATE <= A.DATE) AS RUNING_TOTAL 
FROM #ROLLINGTOTALSEXAMPLE A 
ORDER BY A.DATE; 
関連する問題