Níže je pro BigQuery!
Vezměte prosím na vědomí:Vaše očekávání ohledně názvů výstupních sloupců nejsou správná!
Název sloupce nemůže začínat číslicí – takže v níže uvedeném příkladu – budu místo 1, 2 a 3 používat id_1, id_2 a id_3
SELECT
SUM(CASE WHEN id = 1 THEN 1 END) AS id_1,
SUM(CASE WHEN id = 2 THEN 1 END) AS id_2,
SUM(CASE WHEN id = 3 THEN 1 END) AS id_3
FROM YourTable
Výše uvedený příklad předpokládá, že předem znáte svá ID a je jich velmi málo, takže není velký problém napsat ručně několik řádků pomocí SUM(...) pro každé ID
Pokud tomu tak není, můžete nejprve vygenerovat výše uvedený dotaz programově spuštěním pod dotazem
SELECT 'SELECT ' +
GROUP_CONCAT_UNQUOTED(
'SUM(CASE WHEN id = ' + STRING(id) + ' THEN 1 END) AS id_' + STRING(id)
)
+ ' FROM YourTable'
FROM (
SELECT id FROM (
SELECT * FROM YourTable GROUP BY id ORDER BY id
)
jako výsledek - dostanete řetězec jako níže
SELECT SUM(CASE WHEN id = 1 THEN 1 END) AS id_1,SUM(CASE WHEN id = 2 THEN 1 END) AS id_2,SUM(CASE WHEN id = 3 THEN 1 END) AS id_3 FROM YourTable
Nyní jej zkopírujte a vložte do Editoru dotazů a spusťte
podobný příklad můžete vidět zde - https://stackoverflow.com/a/36623258/5221944