- Home
- SQL Server
- [SQL Server]累計を求める
[SQL Server]累計を求める
- 2017/8/25
- SQL Server
- SUM, 累計を求める
- コメントを書く
SUM関数を使用して累計を求める
SUM関数を使用して累計を求める
累計を求めるにはSUM関数にOVER句を設定する。
表示幅の関係で改行しているが、改行は必須ではない。
1 2 |
sum(累計を求める項目) OVER (PARTITION BY 累計をリセットする組み合わせ ORDER BY 累計を計算する並び順) |
ソースコード例
倉庫業や、商社を例とする。
この例では、倉庫の商品の入出庫の累計を計算している。
前月の商品の在庫から、当月の商品の入出庫データを増減して現時点での在庫数を求めている。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
-- 商品入荷出荷履歴 DECLARE @INOUT_TB table ( ID int, SHOHIN_CD varchar(8), INOUT int ) -- 商品前月在庫 DECLARE @ZEN_ZAIKO table ( SHOHIN_CD varchar(8), ZAIKO int ) -- INSERT INTO @INOUT_TB VALUES (1,'A',10) INSERT INTO @INOUT_TB VALUES (2,'A',20) INSERT INTO @INOUT_TB VALUES (3,'A',100) INSERT INTO @INOUT_TB VALUES (4,'B',10) INSERT INTO @INOUT_TB VALUES (5,'B',20) INSERT INTO @INOUT_TB VALUES (6,'B',-10) INSERT INTO @ZEN_ZAIKO VALUES ('A',100) INSERT INTO @ZEN_ZAIKO VALUES ('B',10) SELECT INOUT.ID AS シーケンスNo, INOUT.SHOHIN_CD AS 商品CD, INOUT.INOUT AS 入出庫, ZK.ZAIKO + sum(INOUT) OVER (PARTITION BY INOUT.SHOHIN_CD ORDER BY INOUT.ID,INOUT.SHOHIN_CD) AS 在庫累計 FROM @INOUT_TB INOUT LEFT OUTER JOIN @ZEN_ZAIKO ZK ON INOUT.SHOHIN_CD = ZK.SHOHIN_CD |
コメント
この記事へのトラックバックはありません。
この記事へのコメントはありません。