T-SQL如何通过CROSS APPLY同时Unpivot Name、Value多列获取目标结果
多组列同时逆透视(Unpivot)实现方案
你已经掌握了用CROSS APPLY + VALUES实现单组列逆透视的方法,要同时处理Name组、Value组的列,不需要做两次单独的逆透视操作,直接在单次CROSS APPLY的VALUES构造中配对同序号的Name和Value列即可,既能保证两组列的对应关系准确,执行效率也更高。
对应实现代码如下:
SELECT cat, b.NameCat, b.Names, b.ValueCat, b.[Values] FROM #temp CROSS APPLY ( VALUES (Name1, 'Name1', Value1, 'Value1'), (Name2, 'Name2', Value2, 'Value2') ) b(Names, NameCat, [Values], ValueCat)
该代码会将原始#temp表的每一行拆分为2行输出,每行对应一组同序号的Name、Value列数据,完全匹配你需要的目标结果结构。
内容的提问来源于stack exchange,提问作者Zayfaya83
相关产品推荐
相关产品推荐

