SUM的多个不同值

时间:2011-12-23 01:58:22

标签: sql sql-server stored-procedures

我有一张数据就像

的表格
userID      name        amount   Date
     1        mark        20     22-10
     1        mark        30     22-10
     2        kane        50     22-12  
     2        kane        60     22-12
     3        mike        60     22-10 

日期是唯一的,结合了userID +用户名+日期

但由于其超过100k的记录,可能会有重复的日期记录,但其他用户ID和名称都没有用

现在我想输出

userID      name        amount    Date
     1        mark        50      22-10
     2        kane        110     22-12 
     3        mike        60      22-10

如果我尝试使用ID,名称,总和(金额),日期,它返回多行并回答错误

我尝试过各种各样的distict和SUM等组合,但没有成功 任何解决方案 感谢

3 个答案:

答案 0 :(得分:7)

您通常使用GROUP BY通过一个或多个其他字段聚合一个或多个字段。

SELECT  userID, Name, SUM(amount), MIN(date)
FROM    YourTable
GROUP BY
        userID, Name

来自MSDN:Aggregate functions

  

聚合函数对一组值执行计算   返回单个值。除COUNT外,汇总   函数忽略空值。聚合函数通常用于   SELECT语句的GROUP BY子句。

一些典型的聚合函数是

  • SUM
  • MIN
  • AVG
  • ...

来自MSDN:GROUP BY

  

按值将一组选定的行分组为一组摘要行   SQL Server 2008 R2中的一个或多个列或表达式。一排   为每个组返回。 SELECT子句中的聚合函数    list提供有关每个组的信息而不是   个别行。

答案 1 :(得分:2)

select 
  userId, name, sum(amount) as amount
from
  table
group by
  userId, name

答案 2 :(得分:2)

您不希望DISTINCT在这里,而是GROUP BY与汇总SUM()

SELECT 
  userID,
  name,
  SUM(amount) AS amount
FROM tbl
GROUP BY userID, name