2017-09-04 71 views
0

我对SQL Server 2012非常新颖。我想创建一个新的累积列,但是此列只能归结为不同的名称。如何基于另一列创建累积列

举例来说,如果我有以下值的名字,我想重复名称的重复对应的值进行累计概括:

James  200 
Vicky  300 
Jane   600 
James  400 
Vicky  700 

新列的最终目标应该有值看起来像下面的值列:

James  200 
Vicky  300 
Jane  600 
James  600 
Vicky  1000 
+5

如果您需要累计总和,我们需要另一个列的顺序排列, – Lamak

+0

试试这个,您可以通过在group上添加名称字段来实现这一点https://stackoverflow.com/questions/2120544/how -to-GET-累积总和 – sawbeanraz

回答

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在他的评论中说,因为我们需要它列。