所以我基本上得到了这张表
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
如何才能获得每个订单的最高结果(最新更改日期结果) 一如既往,非常感谢您的帮助!
答案 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
)
答案 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