如何获取SQL Server中特定行范围的特定列的总和?

时间:2017-11-21 10:29:39

标签: sql sql-server

这是我的表:

Id       Name      Price      Session
----------------------------------------
1        abcd      1000       07.00 AM
1        abcd      1000       07.00 AM
5        mnop      NULL       12.00 AM
5        mnop      NULL       12.00 AM
5        mnop      1000       12.00 AM

我希望这个结果:

Id       Name      Price      Session
--------------------------------------
1        abcd      2000       07.00 AM
5        mnop      1000       12.00 AM

如何在特定行范围内对列Price求和?

3 个答案:

答案 0 :(得分:1)

在查询中包含group by子句。所有未使用聚合函数的srlected列都在group by子句中列出。

Select id ,name ,session ,sum (price)
From table
Group by id, name, session

答案 1 :(得分:0)

没有group by子句的其他方法是SUM() .. over

SELECT DISTINCT
   Id, Name,
   SUM(Price) OVER(PARTITION BY ID, Name, Session) [Price],
   [Session]
FROM <table>;

结果:

Id       Name      Price      Session
--------------------------------------
1        abcd      2000       07.00 AM
5        mnop      1000       12.00 AM

答案 2 :(得分:0)

我认为你可以尝试使用SUM on Price并以GROUP BY结束。

GROUP BY的Microsoft文档: https://docs.microsoft.com/en-us/sql/t-sql/queries/select-group-by-transact-sql

一个简短的例子:

SELECT Id, Name, Session, SUM(Price) AS Price
FROM Table
GROUP BY Id, Name, Session