2017-09-04 76 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在他的評論中說,因爲我們需要它列。