Poniżej dotyczy BigQuery!
Uwaga:Twoje oczekiwania dotyczące nazw kolumn wyjściowych nie są poprawne!
Nazwa kolumny nie może zaczynać się od cyfry - więc w poniższym przykładzie - będę używał id_1, id_2 i id_3 zamiast 1, 2 i 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
Powyższy przykład zakłada, że znasz z góry swoje identyfikatory, a jest ich bardzo mało, więc nie jest wielkim problemem ręczne napisanie kilku liczb wierszy z SUM(...) dla każdego identyfikatora
Jeśli tak nie jest - możesz najpierw wygenerować powyższe zapytanie programowo, uruchamiając poniższe zapytanie
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
)
w rezultacie - otrzymasz ciąg jak poniżej
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
Więc teraz po prostu skopiuj go i wklej do edytora zapytań i uruchom go
podobny przykład możesz zobaczyć tutaj - https://stackoverflow.com/a/36623258/5221944