我有如下所示的数据。知道如何在 Excel 或 SQL 中从宽格式转换为长格式。
ID TOTAL SCORE PLAYER
34543 12342 456 45
45632 34521 241 33
输出:
ID DATA_TYPE VALUE
34543 TOTAL 12342
34543 SCORE 34521
34543 PLAYER 45
45632 TOTAL 34521
45632 SCORE 241
45632 PLAYER 33
最佳答案
我首选的取消透视方法是使用 apply
:
select t.id, v.*
from t cross apply
(values ('TOTAL', total), ('SCORE', score), ('PLAYER', player)
) v(DATA_TYPE, VALUE);
除了相当简洁之外,这是对横向连接的一个很好的介绍。这是 SQL 中非常强大的构造,可用于许多其他目的(与 UNPIVOT
不同)。它还只扫描表一次,因此比 UNION ALL
更高效。
关于sql - 如何在 Excel 或 SQL 中将数据从宽格式传输到长格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50209372/