1

我有一个销售记录表,其中可以多次更新特定的销售订单。我需要获取3 个最新更新,并将它们显示在一行中。

我已经看过这个问题,但我正在努力让它为我工作。

编辑:

以下是原始数据的示例:

order no   DateTime
4774875 1
4774875 2
4774875 3
4944839 3
4944839 2
4944839 1
5245283 1
5245283 2
5245283 3
5268774 3
5268774 2
5268774 1
5268813 1
5268813 2
5268813 3

和理想的输出:

Order no    Date1   Date2   Date3
4774875 1   2   3
4944839 1   2   3
5245283 1   2   3
5268774 1   2   3
5268813 1   2   3
4

1 回答 1

0

尝试这个 。这是小提琴

注意:这是根据您的 OP,我认为您需要1 2 3single col. 您可能需要一个PIVOT to get them in 3 separate columns.

SELECT T1.oid, REPLACE( (SELECT T2.d AS [data()]
            FROM T T2
            WHERE T2.oid = T1.oid
            ORDER BY T2.d
            FOR XML PATH('')),' ', ' : ') x           
FROM (SELECT oid,d, rank() over(partition by oid order by d desc) rk 
FROM T) T1
WHERE rk <=3
GROUP BY oid

--Results (you can remove : if you don't need it)
4774875 1 : 2 : 3
4944839 1 : 2 : 3
5245283 1 : 2 : 3
5268774 1 : 2 : 3
5268813 1 : 2 : 3
于 2012-12-18T09:59:40.533 回答