我以前使用过 Pivot,但我似乎可以让它在这个特定的数据集上工作。也许是因为我试图获得前 5 名的结果并同时进行调整。
这是我的数据示例(请注意,月份将保持不变,因为我是事先这样做的):
City # Of Accidents Month
---- -------------- -----
Los Angeles 23 June
New York 36 June
Denver 14 June
Memphis 18 June
Orlando 25 June
我希望我的结果看起来像这样(月份,根据事故数量,每个顶级城市都有一个列):
Month TopCity1 TopCity2 TopCity3 TopCity4 TopCity5
----- -------- -------- -------- -------- --------
June New York Orlando Los Angeles Memphis Denver
提前致谢!
最佳答案
另一种选择是与 Row_Number() 一起使用 PIVOT
示例
Select *
From (
Select Month
,City
,Col = concat('TopCity',Row_Number() over (Partition By Month Order By [# Of Accidents] Desc) )
From YourTable
) Src
Pivot (max(City) for Col in (TopCity1,TopCity2,TopCity3,TopCity4,TopCity5) ) p
返回
Month TopCity1 TopCity2 TopCity3 TopCity4 TopCity5
June New York Orlando Los Angeles Memphis Denver
关于sql-server - 如何将前 5 行旋转/转置为列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46135530/