Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 具有和的多个不同值_Sql_Sql Server_Stored Procedures - Fatal编程技术网

Sql 具有和的多个不同值

Sql 具有和的多个不同值,sql,sql-server,stored-procedures,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      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+Username+Date组合而成

但由于它有超过10万条记录,可能会有重复的日期记录,但其他用户ID和名称却没有

现在我想要像这样的输出

如果我尝试使用id、名称、sumamount、日期分组,它将返回多行,并且回答不正确

我尝试过各种各样的距离和总和等组合,但没有成功 任何解决方案 多亏了您通常使用一个或多个字段通过一个或多个其他字段聚合一个或多个字段

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

聚合函数对一组值和值执行计算 返回单个值。除计数、聚合外 函数忽略空值。聚合函数通常与 SELECT语句的GROUPBY子句

一些典型的聚合函数是

总和 闵 平均值 ... 从MSDN:

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

通常使用一个或多个字段来聚合一个或多个字段

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

聚合函数对一组值和值执行计算 返回单个值。除计数、聚合外 函数忽略空值。聚合函数通常与 SELECT语句的GROUPBY子句

一些典型的聚合函数是

总和 闵 平均值 ... 从MSDN:

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

在这里,您不需要使用DISTINCT,而是使用聚合和进行分组

在这里,您不需要使用DISTINCT,而是使用聚合和进行分组


@user353600-您必须在这里选择每行的日期,并在该日期使用聚合函数。对于您给定的示例,这其实并不重要,因为每个组的所有日期都是相同的。你可以简单地将MINDate添加到select语句中。-1:因为过于冗长和聪明的alec。不,等等,是我+1因为你的答案不仅正确,而且信息丰富…@user353600-你必须在这里选择每行的日期,并在日期上使用聚合函数。对于您给定的示例,这其实并不重要,因为每个组的所有日期都是相同的。你可以简单地将MINDate添加到select语句中。-1:因为过于冗长和聪明的alec。不,等等,是我+感谢你的回答不仅正确,而且内容丰富。。。
SELECT  userID, Name, SUM(amount), MIN(date)
FROM    YourTable
GROUP BY
        userID, Name
SELECT 
  userID,
  name,
  SUM(amount) AS amount
FROM tbl
GROUP BY userID, name