# #google-bigquery #pivot
Вопрос:
Как я могу преобразовать 2 строки в столбцы?
ID|col_1|col_2|col_3|col_4
1 |a |A |Q |5000
1 |a |B |Q |8000
2 |a |A |R |4000
2 |a |B |T |6000
В:
ID|col_1|A_col3|A_col4|B_col3|B_col4
1 |a |Q |5000 |R |4000
2 |a |Q |8000 |T |6000
где значения в col_2 теперь являются заголовками столбцов, а значения col_3 и col_4 являются аггерированными в сводке.
Я попробовал это, но застрял на следующем шаге и не выдает желаемых результатов:
select * from
(
select ID, col_1, col_2, col_3, col_4 from tableA
) as A
pivot (max(col_3) for col_2 in ('A','B'))
Ответ №1:
Просто используйте условную агрегацию:
select id,
max(case when col_2 = 'A' then col_3 end) as a_col3,
max(case when col_2 = 'A' then col_4 end) as a_col4,
max(case when col_2 = 'B' then col_3 end) as b_col3,
max(case when col_2 = 'B' then col_4 end) as b_col4
from tablea
group by id;