运行SQL Server中记录子组的总和

时间:2015-12-08 14:22:59

标签: sql sql-server sql-server-2014

我需要计算表中数据组的运行总计(在SQL Server 2014中)。请参阅下面的示例。我需要计算RunningTotalByID列。

enter image description here

非常感谢任何想法/想法。

谢谢!

1 个答案:

答案 0 :(得分:0)

SQL Server 2014支持SUM() OVER (PARTITION BY ... ORDER BY ...),它计算运行总和:

DECLARE @T TABLE (ID char(1), Value int);

INSERT INTO @T (ID, Value) VALUES
('A', 1),
('A', 1),
('B', 1),
('B', 1),
('B', 1),
('C', 1),
('C', 1);

SELECT
    ID
    ,Value
    ,SUM(Value) OVER (PARTITION BY ID ORDER BY Value 
        ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS RunningTotal
FROM @T
ORDER BY ID, RunningTotal;

<强>结果

+----+-------+--------------+
| ID | Value | RunningTotal |
+----+-------+--------------+
| A  |     1 |            1 |
| A  |     1 |            2 |
| B  |     1 |            1 |
| B  |     1 |            2 |
| B  |     1 |            3 |
| C  |     1 |            1 |
| C  |     1 |            2 |
+----+-------+--------------+