我希望获得垂直的单行数据。我相信UNPIVOT是我最好的选择,但我一直无法使它工作。我的行包含以下数据:
id | Qualifier 1 | Qualifier 2 | Qualifier 3 | Value 1 | Value 2 | Value 3
------------------------------------------------------------------------------
1 CP HP TE 0000000000 1111111111 2222222222
我希望将所有预选赛及其相关值排在一行。例如,Qualifer 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
最佳答案
我会用cross apply
:
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);
关于sql - 使用SQL UNPIVOT使用多列使行垂直,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56155701/