Sql逐行获取

Thu*_*oda 1 sql sql-server sql-server-2014

我有一张桌子,如下图所示

ID | PName | Price
___+_______+______
1  |some   |2000
2  |some   |3000
3  |some   |250
Run Code Online (Sandbox Code Playgroud)

现在我需要查询获得以下结果

ID | PName | Price  |Total Price
___+_______+________+____________
1  |some   |2000    |2000
2  |some   |3000    |5000
3  |some   |250     |5250


Total Price= Price + Total Price
Run Code Online (Sandbox Code Playgroud)

如何使用sql查询获得上述结果

Gor*_*off 10

你似乎想要一个累积的总和.支持如下:

select t.*,
       sum(price) over (order by id) as total_price
from t;
Run Code Online (Sandbox Code Playgroud)

自SQL Server 2012以来,SQL Server一直支持这种ANSI标准语法.

在早期版本中,您可以使用相关子查询:

select t.*,
       (select sum(t2.price)
        from t t2
        where t2.id <= t.id
       ) as total_price
from t;
Run Code Online (Sandbox Code Playgroud)

编辑:

正如John建议的那样,如果你想为每个求和一个单独的和pname,那么语法将是:

select t.*,
       sum(t.price) over (partition by p.name order by t.id) as total_price
from t;
Run Code Online (Sandbox Code Playgroud)