Abaixo está para o BigQuery!
Observe:suas expectativas sobre os nomes das colunas de saída não estão corretas!
O nome da coluna não pode começar com dígito - portanto, no exemplo abaixo - usarei id_1, id_2 e id_3 em vez de 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
O exemplo acima pressupõe que você conheça antecipadamente seus IDs e há muito poucos deles, portanto, não é grande coisa escrever manualmente alguns números de linhas com SUM(...) para cada ID
Se este não for um caso - você pode primeiro gerar a consulta acima programaticamente executando a consulta abaixo
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
)
como resultado - você receberá uma string como abaixo
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
Então, agora basta copiá-lo e colá-lo no Editor de Consultas e executá-lo
você pode ver um exemplo semelhante aqui - https://stackoverflow.com/a/36623258/5221944