我以前使用过 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/