SQL MAX(DATE)订单号

时间:2011-05-13 13:52:18

标签: sql

我有以下查询:

SELECT o.ClientId, o.MAX(Date), o.OrderNumber
FROM dbo.tblOrders
GROUP BY o.ClientId, o.OrderNumber

这仍然是我的所有订单号码,我怎样才能获得与MAX日期相符的订单号。

我想要完成的是获取每个客户的MAX订单日期并显示订单号。

由于

3 个答案:

答案 0 :(得分:7)

SELECT t.ClientId, t.MaxDate, o.OrderNumber
    FROM (SELECT ClientId, MAX(Date) as MaxDate
              FROM dbo.tblOrders
              GROUP BY ClientId) t
        INNER JOIN dbo.tblOrders o
            ON t.ClientId = o.ClientId
                AND t.MaxDate = o.Date

如果你正在使用支持窗口函数的RDBMS,比如SQL Server 2005+,那么也可以这样做:

SELECT t.ClientId, t.OrderNumber, t.Date
    FROM (SELECT ClientId, OrderNumber, Date, 
                 ROW_NUMBER() OVER(PARTITION BY ClientId ORDER BY Date DESC) as RowNum
              FROM dbo.tblOrders
         ) t
    WHERE t.RowNum = 1

答案 1 :(得分:0)

查看SQL中的HAVING子句,或者只是添加一个基于order_id的WHERE子句和一个子选择,该子选择使用适当的MAX值获取表中的order_id。

答案 2 :(得分:0)

SELECT 
  o.ClientID, 
  o.Date,
  o.OrderNumber
FROM dbo.tblOrders o
INNER JOIN (SELECT 
              o1.ClientId, 
              MAX(o1.Date) as MaxDate, 
              o1.OrderNumber
            FROM dbo.tblOrders o1
            GROUP BY o.ClientId) o2 ON o.ClientID = o2.ClientID AND o.Date = o2.MaxDate