SQLServerで累積値(累積比)を求める

プログラミング SQL Server
スポンサーリンク

SQLServerで累積値(累積比)を求める

SQLServerで累積値(累積比)を求めるにはちょっとした
工夫が必要です。

調べたのでメモ書きしておきます。

累積値(累積比)を取得する

累積値(累積比)を取得するSQLは以下のようになります。

--テーブルを作成する
CREATE TABLE test_table
(
    no   int 
   ,val1  int
   ,val2  DECIMAL(5,1)
)

--データを挿入する
INSERT INTO test_table VALUES ( 1, 10, 10.3 )
INSERT INTO test_table VALUES ( 2, 20, 20.3 )
INSERT INTO test_table VALUES ( 3, 30, 30.3 )
INSERT INTO test_table VALUES ( 4, 40, 40.3 )

--累積値を取得する
SELECT
     A.no
    ,A.val1
    ,A.val2
    ,SUM(B.val1) AS 累計1
    ,SUM(B.val2) AS 累計2
FROM
    test_table AS A
    INNER JOIN test_table AS B ON
        A.no >= B.no
GROUP BY
     A.no
    ,A.val1
    ,A.val2
ORDER BY
    no

DROP TABLE test_table

実行結果は

no    val1    val2    累計1    累計2
1      10     10.3      10     10.3
2      20     20.3      30     30.6
3      30     30.3      60     60.9
4      40     40.3     100    101.2

これで無事累積値(累積比)を取得することができます。

タイトルとURLをコピーしました