Di seguito è per BigQuery!
Nota:le tue aspettative sui nomi delle colonne di output non sono corrette!
Il nome della colonna non può iniziare con una cifra, quindi nell'esempio seguente userò id_1, id_2 e id_3 invece di 1, 2 e 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
L'esempio sopra presuppone che tu conosca in anticipo i tuoi ID e ce ne siano pochissimi, quindi non è un grosso problema scrivere manualmente pochi numeri di righe con SUM(...) per ogni ID
In caso contrario, puoi prima generare la query sopra a livello di codice eseguendo la query sotto
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
)
di conseguenza, otterrai una stringa come quella di seguito
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
Quindi, ora copialo e incollalo nell'editor di query ed eseguilo
puoi vedere un esempio simile qui - https://stackoverflow.com/a/36623258/5221944