使用SQL UNPIVOT使用多列使行垂直
我有一行数据,我正在寻找垂直。我相信UNPIVOT是我最好的选择,但我一直无法让它工作。我的行具有以下数据:使用SQL UNPIVOT使用多列使行垂直,sql,sql-server,Sql,Sql Server,我有一行数据,我正在寻找垂直。我相信UNPIVOT是我最好的选择,但我一直无法让它工作。我的行具有以下数据: id | Qualifier 1 | Qualifier 2 | Qualifier 3 | Value 1 | Value 2 | Value 3 ------------------------------------------------------------------------------ 1 CP HP TE
id | Qualifier 1 | Qualifier 2 | Qualifier 3 | Value 1 | Value 2 | Value 3
------------------------------------------------------------------------------
1 CP HP TE 0000000000 1111111111 2222222222
我希望将所有限定符与其关联值放在一行中。例如,限定符1将始终链接到值1。它永远不会与值2关联。我希望得到如下结果:
id | Qualifier | Value
-----------------------
1 CP 0000000000
1 HP 1111111111
1 TE 2222222222
我已经对我的代码进行了多次迭代,但到目前为止,我能想到的最有效的方法如下。任何指导都将不胜感激
SELECT ID, NUMBERS,
FROM TABLE1
UNPIVOT
(
numbers for nums in (Value1,Value2,Value3)
) unPiv
我会使用
交叉应用
:
select t.id, v.Qualifier, v.Value
from t cross apply
(values (t.Qualifier1, t.Value1),
(t.Qualifier2, t.Value2),
(t.Qualifier3, t.Value3)
) v(Qualifier, Value);
非常感谢。这给了我一个坚实的基础。我以前从未使用过交叉应用程序,因此它从未注册为选项。@ChrisLombardi如果您想了解解决方案的说明,请参阅本文