如何基于另一列创建累积列

时间:2017-09-04 17:16:04

标签: sql-server

我是SQL Server 2012的新手。我想创建一个新的累积列,但是这个列只是为了不同的名称而总结。

例如,如果我的名字具有以下值,我希望重复相应的重复名称值,以便累计总结:<​​/ p>

James        200
Vicky        300
Jane         600
James        400
Vicky        700

新列的最终目标应具有类似于以下值列的值:

James     200
Vicky     300
Jane      600
James     600
Vicky     1000

1 个答案:

答案 0 :(得分:2)

试试这个:

DECLARE @T TABLE (Names VARCHAR(50), Value INT);

INSERT INTO @T VALUES
    ('James', 200),
    ('Vicky', 300),
    ('Jane', 600),
    ('James', 400),
    ('Vicky', 700);

SELECT Names, SUM(Value) OVER (PARTITiON BY Names ORDER BY Value) Value
FROM @T
ORDER BY Value;

结果:

+=======+=======+
| Names | Value |
+=======+=======+
| James |   200 |
+-------+-------+
| Vicky |   300 |
+-------+-------+
| James |   600 |
+-------+-------+

<强> Demo

注意:它的顺序不一样,如果你想要相同的顺序,你应该做@Lamak在评论中说的话,因为我们需要那个列。