我有以下查询:
SELECT o.ClientId, o.MAX(Date), o.OrderNumber
FROM dbo.tblOrders
GROUP BY o.ClientId, o.OrderNumber
Run Code Online (Sandbox Code Playgroud)
这仍然是给我所有的订单号,我怎么才能得到与MAX日期一致的订单号.
我想要完成的是获取每个客户的MAX订单日期并显示该订单号.
谢谢
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
Run Code Online (Sandbox Code Playgroud)
如果您使用的是支持窗口函数的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
Run Code Online (Sandbox Code Playgroud)