我有一个查询,可以为我提供所有客户及其最近三个订单日期。
例如:
CustomerId DateOrdered
167 2006-09-16 01:25:38.060
167 2006-09-21 13:11:53.530
171 2006-08-31 15:19:22.543
171 2006-09-01 13:30:54.013
171 2006-09-01 13:34:36.483
178 2006-09-04 11:36:19.983
186 2006-09-05 12:50:27.153
186 2006-09-05 12:51:08.513
我想知道是否有办法将其旋转为这样显示:
[CustomerId] [Most Recent] [Middle] [Oldest]
'167' '2006-09-21 13:11:53.530' '2006-09-16 01:25:38.060' 'NULL'
'171' '2006-09-01 13:34:36.483' '2006-09-01 13:30:54.013' '2006-08-31 15:19:22.543'
'178' '2006-09-04 11:36:19.983' NULL NULL
'186' '2006-09-05 12:51:08.513' '2006-09-05 12:50:27.153' NULL
最佳答案
;WITH YourQuery As
(
SELECT CustomerId, DateOrdered,
ROW_NUMBER() OVER (PARTITION BY CustomerId ORDER BY DateOrdered DESC) AS RN
FROM Orders
)
select [CustomerId],
MAX(CASE WHEN RN=1 THEN DateOrdered END) AS [Most Recent] ,
MAX(CASE WHEN RN=2 THEN DateOrdered END) AS [Middle] ,
MAX(CASE WHEN RN=3 THEN DateOrdered END) AS [Oldest]
FROM YourQuery
WHERE RN<=3
GROUP BY [CustomerId]
关于sql-server - 有没有办法转换客户 ID 及其最近的订单日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3401218/