0

我正在尝试编写一个查询,在其中选择 OrderTable ex 中特定订单的最新更改。

OrderID|       ChangeDate      | 
-------|-----------------------|
Order1 |2013-03-17 14:40:47.000|
Order2 |2013-03-12 12:34:09.000|
Order3 |2013-03-20 18:30:12.000|
Order1 |2013-03-20 16:09:09.000|
Order2 |2013-03-20 12:39:49.000|

说(来自上面的示例),我需要的是 Order1、Order2 和 Order3 的最新条目。有没有人遇到过类似的情况?我真的很感谢你的帮助!

4

3 回答 3

0

你可以简单地这样做:

SELECT OrderID,
       MAX(ChangeDate) as LatestEntry
FROM yourTable
GROUP BY OrderID
于 2013-03-20T16:35:28.293 回答
0

尝试这个:

Select OrderID,max(ChangeDate) as LatestDate
from yourTable
group by OrderID
于 2013-03-20T16:30:47.377 回答
0

有多种方法,但假设您想要整个记录,而不仅仅是max( date)每个订单 ID,您可以使用 row_number。

WITH CTE
(
SELECT 
  OrderID, 
  changeDate, 
  ChangeValue,
  ROW_NUMBER() OVer (Partition BY OrderID order by ChangeDate Desc) rn

FROM order 
)
SELECT * FROM CTE where rn = 1

注意:这会为每个订单返回一条记录。如果您的最大更改日期相同,这可能是也可能不是问题

于 2013-03-20T16:32:34.703 回答