仅筛选出订单的最新条目

时间:2013-03-20 16:28:26

标签: sql sql-server reporting-services where

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

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的最新条目。 有没有人处于类似的情况? 我非常感谢你的帮助!

3 个答案:

答案 0 :(得分:0)

试试这个:

Select OrderID,max(ChangeDate) as LatestDate
from yourTable
group by OrderID

答案 1 :(得分:0)

有多种方法,但假设您想要整个记录,而不仅仅是每个订单ID max( date),您可以使用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

注意:每个订单只返回一条记录。如果您有最大更改日期的平局

,这可能是也可能不是问题

答案 2 :(得分:0)

你可以这样做:

SELECT OrderID,
       MAX(ChangeDate) as LatestEntry
FROM yourTable
GROUP BY OrderID