每个订单只有最后日期结果?怎么样?

时间:2013-03-21 09:41:09

标签: sql tsql reporting-services where

所以我基本上得到了这张表

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

我想要和需要的是,只有每个OrderID中的前一个, (现在我得到了大约28000个结果[整个表格],每个订单100次左右) 我只需要前一个(最后更改日期) 我当前的查询看起来像这样:

Select
     a.AuftragID
    ,a.Kunde
    ,max(ChangeDate)
From Orders O innerJoin
     factTable F on O.OrderID = F.OrderID
Group by a.AuftragID
        ,a.Kunde

如何才能获得每个订单的最高结果(最新更改日期结果) 一如既往,非常感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

使用ROW_NUMBER

WITH cte 
     AS (SELECT F.auftragid, 
                F.kunde, 
                changedate, 
                rn = Row_number() 
                     OVER( 
                       partition BY O.orderid 
                       ORDER BY changedate DESC) 
         FROM   orders O 
                INNER JOIN facttable F 
                        ON O.orderid = F.orderid) 
SELECT auftragid, 
       kunde, 
       changedate 
FROM   cte 
WHERE  rn = 1 

(请注意,我假设您的示例查询中的别名是一种类型,而a实际上是f

TSQL Ranking Functions

答案 1 :(得分:0)

将回报限制为一个:

Select
     a.AuftragID
    ,a.Kunde
    ,max(ChangeDate)
From Aufträge a, factTable F
where a.AuftragID = F.OrderID
Group by a.AuftragID
     ,a.Kunde
order by a.AuftragID DESC
limit 1