UserID | UserName | 534 more columns -->
1 | John | 534 more values -->
Run Code Online (Sandbox Code Playgroud)
我正在从这些列中的大约 78 列中查找此输出:
Column | Value
UserID | 1
UserName| John
+78 more rows
Run Code Online (Sandbox Code Playgroud)
这称为逆透视,我喜欢使用apply:
select v.*
from t cross apply
(values ('UserId', t.UserId),
('UserName', t.UserName)
. . .
) v(column, value);
Run Code Online (Sandbox Code Playgroud)
请注意,这假设所有列都具有相同的类型。
apply实现技术上所谓的“横向连接”。还有其他方法可以实现此逻辑 - 使用union all或unpivot。
然而,横向连接非常强大,反旋转是使用它们的一个很好的介绍。