我有一张销售记录表格,其中特定销售订单可以更新多次次。我需要获取 3 最新更新,并将其显示在单行中。
我看过question,但我正在努力让它为我工作。
编辑:
以下是原始数据的示例:
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
答案 0 :(得分:0)
试试这个。 Here is the fiddle
注意:这是根据您的OP,我认为您需要1 2 3
中的single 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