我有一张数据就像
的表格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等组合,但没有成功 任何解决方案 感谢
答案 0 :(得分:7)
您通常使用GROUP BY通过一个或多个其他字段聚合一个或多个字段。
SELECT userID, Name, SUM(amount), MIN(date)
FROM YourTable
GROUP BY
userID, Name
来自MSDN:Aggregate functions
聚合函数对一组值执行计算 返回单个值。除COUNT外,汇总 函数忽略空值。聚合函数通常用于 SELECT语句的GROUP BY子句。
一些典型的聚合函数是
来自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