我有一些格式的数据:
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中执行此操作?
答案 0 :(得分:4)
如果您的分数列已修复且您不需要聚合,则可以使用多个def _build_options(self, options):
if type(options) == dict:
for option in self._optionslist:
if option in options:
del options[option]
return options
和SELECT
语句生成您请求的数据形状。 E.g。
UNION ALL
答案 1 :(得分:1)
在配置单元中,您可以将named_struct
函数,array
函数和explode
函数与LATERAL VIEW
构造
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;