首先,我有以下表格的行
name, var1, var2, var3
Foo, A, B, C
并且由于我需要按var1分组,也需要按var2和var3分组(分别进行分组),因此我想将每一行转换为以下形式的三行:
name, key
Foo, var1=A
Foo, var2=B
Foo, var3=C
这样我就可以按键分组。 Presto没有UNPIVOT功能,因此任何建议将不胜感激!
答案 0 :(得分:1)
您可以通过对需要的行数的子查询进行交叉联接来增加行数。
select
t.name
, case when n.n = 1 then t.var1
when n.n = 2 then t.var2
when n.n = 3 then t.var3
end as key
from sourcetbl t
cross join (
select 1 as n union all
select 2 as n union all
select 3 as n
) n
然后可以使用case表达式根据所提供的“行数”(在我的示例中为n.n
)来减少列数