用group by和sum查询表

时间:2015-09-04 01:56:55

标签: sql sql-server tsql

我有下表名为Orders

  Order  | Date      |    Total
------------------------------------
 34564   | 03/05/2015|  15.00
 77456   | 01/01/2001|   3.00
 25252   | 02/02/2008|   4.00
 34564   | 03/04/2015|   7.00 

我正在尝试按顺序#选择不同的顺序总和总数和组,问题是它显示34564的两个记录,因为它们是不同的日期..如何重复订单并且只选择max(date) - 但是这两个实例的总和是基数?

I.E结果

  Order  | Date      |    Total
------------------------------------
 34564   | 03/05/2015|  22.00
 77456   | 01/01/2001|   3.00
 25252   | 02/02/2008|   4.00

尝试:

SELECT DISTINCT Order, Date, SUM(Total)
FROM Orders
GROUP BY Order, Date

如果你能看到上面的胜利,但我不知道如何实现我想要的目标。

5 个答案:

答案 0 :(得分:4)

SELECT [order], MAX(date) AS date, SUM(total) AS total 
FROM Orders o
GROUP BY [order]

答案 1 :(得分:3)

您可以使用MAX汇总功能选择每个Date群组中显示的最新Order

SELECT Order, MAX(Date) AS Date, SUM(Total) AS Total
FROM Orders
GROUP BY Order

答案 2 :(得分:2)

最简单的查询应该是:

SELECT MAX(Order), MAX(Date), SUM(Total)
FROM Orders

答案 3 :(得分:1)

您可以同时使用SUMMAX

SELECT
    [Order],
    [Date] = MAX([Date]),
    Total = SUM(Total)
FROM tbl
GROUP BY [Order]

建议,请不要使用OrderDate等保留字来表示列和表名。

答案 4 :(得分:1)

只需将MAX(Date)添加到SELECT子句即可。 试试这个:

SELECT DISTINCT Order, MAX(Date), SUM(Total)
FROM Orders
GROUP BY Order, Date