使用SQL 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

我有一行数据,我正在寻找垂直。我相信UNPIVOT是我最好的选择,但我一直无法让它工作。我的行具有以下数据:

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如果您想了解解决方案的说明,请参阅本文