Генерация дополнительных строк SQL из столбцов - PullRequest
0 голосов
/ 12 декабря 2018

В Presto у меня есть строки вида

name, var1, var2, var3
Foo, A, B, C

И поскольку мне нужно сгруппировать по var1, а также по var2 и var3 (каждый по отдельности), я хочу преобразовать каждую строку в три строкив форме:

name, key
Foo, var1=A
Foo, var2=B
Foo, var3=C

Так что я могу просто группировать по ключу.В Presto нет функции UNPIVOT, поэтому мы будем благодарны за любые советы!

1 Ответ

0 голосов
/ 12 декабря 2018

Вы можете увеличить количество строк, используя перекрестное соединение с подзапросом необходимого количества строк, например,

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

, и затем выражение для регистра можно использовать для уменьшения количества столбцов на основепредоставленный «номер строки» (n.n в моем примере)

...