从列中生成额外的 SQL 行
Generating additional SQL rows from columns
在瞬间,我有表格的行
name, var1, var2, var3
Foo, A, B, C
并且因为我需要按 var1 分组,还需要按 var2 和 var3(分别分组),所以我想将每一行转换为以下形式的三行:
name, key
Foo, var1=A
Foo, var2=B
Foo, var3=C
这样我就可以按键分组了。 Presto 没有 UNPIVOT 功能,所以任何建议将不胜感激!
您可以通过对所需行数的子查询使用交叉连接来增加行数,例如
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 表达式根据提供的 "row number"(在我的示例中为 n.n
)减少列数
在瞬间,我有表格的行
name, var1, var2, var3
Foo, A, B, C
并且因为我需要按 var1 分组,还需要按 var2 和 var3(分别分组),所以我想将每一行转换为以下形式的三行:
name, key
Foo, var1=A
Foo, var2=B
Foo, var3=C
这样我就可以按键分组了。 Presto 没有 UNPIVOT 功能,所以任何建议将不胜感激!
您可以通过对所需行数的子查询使用交叉连接来增加行数,例如
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 表达式根据提供的 "row number"(在我的示例中为 n.n
)减少列数