Sql逐行获取

时间:2017-09-16 14:44:09

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

我有一张表,如下所示

ID | PName | Price
___+_______+______
1  |some   |2000
2  |some   |3000
3  |some   |250

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

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


Total Price= Price + Total Price

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

1 个答案:

答案 0 :(得分:9)

您似乎想要累积总和。这支持为:

select t.*,
       sum(price) over (order by id) as total_price
from t;

自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;

编辑:

正如John建议的那样,如果你想为每个pname分别求和,那么语法就是:

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