UserID | UserName | 534 more columns -->
1 | John | 534 more values -->
我只是从这些列中的78个中寻找这个输出:
Column | Value
UserID | 1
UserName| John
+78 more rows
答案 0 :(得分:3)
这称为 unpivoting ,我喜欢使用apply
:
select v.*
from t cross apply
(values ('UserId', t.UserId),
('UserName', t.UserName)
. . .
) v(column, value);
请注意,这假设所有列都具有相同的类型。
apply
实现了技术上称为“横向连接”的东西。还有其他方法可以实现此逻辑 - 使用union all
或unpivot
。
然而,横向连接非常强大,而且对于使用它们来说,不透明是一个很好的介绍。