Microsoft SQL Server如何使用UNPIVOT实现多列转单列?
实现方案
Microsoft SQL Server原生支持UNPIVOT语法,和你在Oracle中使用的实现逻辑基本一致,可直接使用如下语句得到目标结果:
SELECT Col FROM [SINGLE_COL] UNPIVOT ( -- 定义转换后输出的列名 Col -- 定义存储原列名的字段,不需要输出可以不查询该字段 FOR OriginalColumn IN ([COL1], [COL2], [COL3]) ) AS UnpivotResult
如果你需要兼容更早期的SQL Server版本,或者需要保留原数据中的NULL值(UNPIVOT默认会过滤值为NULL的行),可以使用CROSS APPLY + VALUES的替代实现,效果一致:
SELECT v.Col FROM [SINGLE_COL] t CROSS APPLY ( VALUES ([COL1]), ([COL2]), ([COL3]) ) AS v(Col)
两种写法执行后都会得到你期望的单列输出:
COL A B C D E F
内容的提问来源于stack exchange,提问作者rtn60350
相关产品推荐
相关产品推荐

