#sql #google-cloud-platform #count #google-bigquery #pivot
#sql #google-облачная платформа #количество #google-bigquery #сводная
Вопрос:
Я пытаюсь преобразовать строки в столбец (своего рода свод)
Текущая таблица (сгенерированная из CTE)
with cte as (select date(start_time) as date, type, count(*) as total
from table
where start_time >='2020-09-09'
group by 1,2
order by 1)
Мой ожидаемый результат:
Я попробовал этот запрос, но он не сработал
with cte as (select date(start_time) as date, type, count(*) as total
from table
where start_time >='2020-09-09'
group by 1,2
order by 1),
c1 as(
select date,total as C1 from cte where type='c1') ,
c2 as(
select date, total as C2 from cte where type='c2'),
c3 as(
select date,total as C3 from cte where type='c3')
select cte.date,c1.C1,c2.C2,c3.C3 from cte join c1 on cte.date=c1.date join c2 on cte.date=c2.date
join c3 on cte.date=c3.date join ext on cte.date=ext.date
Это сработало, но каждая строка была добавлена 3 раза.
Ответ №1:
Используйте условную агрегацию:
select
date(start_time) start_date,
countif(cat = 'c1') c1,
countif(cat = 'c2') c2,
countif(cat = 'c3') c3
from mytable
where start_time >='2020-09-09'
group by date(start_time)