Все още няма добър начин да направите това в BigQuery, но можете да го направите, като следвате идеята по-долу
Стъпка 1
Изпълнете под заявката
SELECT 'SELECT [group], ' +
GROUP_CONCAT_UNQUOTED(
'SUM(IF([date] = "' + [date] + '", value, NULL)) as [d_' + REPLACE([date], '/', '_') + ']'
)
+ ' FROM YourTable GROUP BY [group] ORDER BY [group]'
FROM (
SELECT [date] FROM YourTable GROUP BY [date] ORDER BY [date]
)
В резултат - ще получите низ като по-долу (форматиран е по-долу за четливост)
SELECT
[group],
SUM(IF([date] = "date1", value, NULL)) AS [d_date1],
SUM(IF([date] = "date2", value, NULL)) AS [d_date2]
FROM YourTable
GROUP BY [group]
ORDER BY [group]
Стъпка 2
Просто стартирайте над съставената заявка
Резултатът ще бъде като по-долу
group d_date1 d_date2
group1 15 30
Забележка 1 :Стъпка 1 е полезна, ако имате много групи, за да завъртите твърде много ръчна работа. В този случай - Стъпка 1 ви помага да генерирате вашата заявка
Забележка 2 :тези стъпки се прилагат лесно във всеки клиент по ваш избор или можете просто да ги стартирате в BigQuery Web UI
Можете да видите повече за завъртането в другите ми публикации.
Как да мащабирате завъртането в BigQuery?
Моля, обърнете внимание – има ограничение от 10K колони на таблица – така че сте ограничени с 10K организации.
Можете също да видите по-долу като опростени примери (ако един по-горе е твърде сложен/подробен):
Как да транспонирате редове в колони с голямо количество данни в BigQuery/SQL?
Как да създадете фиктивни колони с променлива за хиляди категории в Google BigQuery?
Завъртане на повторени полета в BigQuery