2
我在格式一些数据:从宽幅转换数据,以长格式在SQL
VAR1 VAR2 Score1 Score2 Score3
A B 1 2 3
我需要将其转换成格式
VAR1 VAR2 VarName Value
A B Score1 1
A B Score2 2
A B Score3 3
我如何在SQL这样做?
我在格式一些数据:从宽幅转换数据,以长格式在SQL
VAR1 VAR2 Score1 Score2 Score3
A B 1 2 3
我需要将其转换成格式
VAR1 VAR2 VarName Value
A B Score1 1
A B Score2 2
A B Score3 3
我如何在SQL这样做?
如果您的分数列是固定的,并且您不需要汇总,则可以使用多个SELECT
和UNION 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]
在蜂巢,你可以使用named_struct
功能,array
功能,并与LATERAL VIEW
会同explode
功能构建
SELECT VAR1, VAR2, var_struct.varname, var_struct.value FROM
(
SELECT
VAR1,
VAR2,
array (
named_struct("varname","Score1","value",Score1),
named_struct("varname","Score2","value",Score2),
named_struct("varname","Score3","value",Score3)
) AS struct_array1
FROM OrignalTable
) t1 LATERAL VIEW explode(struct_array1) t2 as var_struct;
什么是'value'应该代表? – potashin
请提供有关数据结构的更多信息。您是否已经发布了专栏名称或值的片段? “价值”从哪里来? –
已做出更改。请检查 – Arc