Sql server 如何在没有聚合的情况下进行轴心转换
我一直在这个网站和谷歌上阅读关于如何调整我的数据,但似乎不太明白。我希望能够在不进行任何聚合的情况下进行轴心转换。我的数据目前看起来像。我的sql是:Sql server 如何在没有聚合的情况下进行轴心转换,sql-server,Sql Server,我一直在这个网站和谷歌上阅读关于如何调整我的数据,但似乎不太明白。我希望能够在不进行任何聚合的情况下进行轴心转换。我的数据目前看起来像。我的sql是: select act, rn from ##Temp_Outage_Crew order by act act rn 00208763-BC2 AUXO01 00208763-BC2 AUXO03 但我希望它看起来像下面所示。我现在有了一种方法来透视这些数据,但我无法让它工作 act rn1
select act, rn
from ##Temp_Outage_Crew
order by act
act rn
00208763-BC2 AUXO01
00208763-BC2 AUXO03
但我希望它看起来像下面所示。我现在有了一种方法来透视这些数据,但我无法让它工作
act rn1 rn2
00208763-BC2 AUXO01 AUX03
我已“尝试”使用“行数”功能,但似乎也无法使其正常工作。如评论中所述,您必须在
透视中使用聚合MAX
适用于字符串,因此,当您有一对一的关系时,它是一个很好的选择
要获取任意rn1
和rn2
列,使用ROW_NUMBER()是有意义的。假设您知道特定act
值的rn
最大值,您可以执行以下操作:
;WITH toc_CTE
AS (SELECT [act],
[rn],
[RowNum] = CONCAT('rn', ROW_NUMBER()
OVER (
PARTITION BY [act]
ORDER BY [rn]))
FROM #Temp_Outage_Crew)
SELECT [act],
[rn1],
[rn2],
[rn3],
[rn4]
FROM toc_CTE
PIVOT (MAX([rn])
FOR [RowNum] IN ([rn1],
[rn2],
[rn3],
[rn4])) pvt
但是,如果对每个act
的rn
值的数量没有具体限制,那么您将不得不使用 不聚合的唯一原因是当只有价值时;在这种情况下,对该值使用max
函数将返回该值;因此,尽管您使用了聚合,但您还是会得到您想要的结果。可能是它的重复。我就是搞不懂查询语法。我尝试了多种变体,但运气不好,但上面的语法非常有效。非常感谢你@Lisa欢迎来到Stack Overflow。如果这个答案令人满意地解决了你的问题,请考虑使用分数旁边的复选标记“接受”它。这让网站上的其他用户知道这个问题有一个可行的解决方案。