在 SQL 中将数据从宽格式转换为长格式

Arc*_*Arc 4 sql hive

我有一些格式的数据:

VAR1 VAR2 Score1 Score2 Score3
A     B    1      2      3
Run Code Online (Sandbox Code Playgroud)

我需要将其转换为格式

VAR1 VAR2 VarName Value
 A     B  Score1   1
 A     B  Score2   2
 A     B  Score3   3
Run Code Online (Sandbox Code Playgroud)

如何在 SQL 中执行此操作?

Chr*_*ord 6

如果您的分数列是固定的并且您不需要聚合,您可以使用多个SELECTandUNION ALL语句来生成您请求的数据形状。例如

SELECT [VAR1], [VAR2], [VarName] = 'Score1', [Value] = [Score1]
FROM [dbo].[UnknownMe]
UNION ALL
SELECT [VAR1], [VAR2], [VarName] = 'Score2', [Value] = [Score2]
FROM [dbo].[UnknownMe]
UNION ALL
SELECT [VAR1], [VAR2], [VarName] = 'Score3', [Value] = [Score3]
FROM [dbo].[UnknownMe]
Run Code Online (Sandbox Code Playgroud)

SQL小提琴:http ://sqlfiddle.com/#!6/f54b2/4/0