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