Nedan är för BigQuery!
Observera:dina förväntningar på utdatakolumnnamn är inte korrekta!
Kolumnnamn kan inte börja med siffra - så i exemplet nedan - kommer jag att använda id_1, id_2 och id_3 istället för 1, 2 och 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
Ovanstående exempel förutsätter att du i förväg känner till dina ID och att det finns väldigt få av dem så det är ingen stor sak att manuellt skriva några antal rader med SUM(...) för varje ID
Om detta inte är ett fall - du kan först generera ovanstående fråga programmatiskt genom att köra nedanstående fråga
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
)
som ett resultat - du kommer att få en sträng som nedan
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
Så nu är det bara att kopiera det och klistra in i Query Editor och köra det
du kan se liknande exempel här - https://stackoverflow.com/a/36623258/5221944