¡Abajo está para BigQuery!
Tenga en cuenta:¡sus expectativas sobre los nombres de las columnas de salida no son correctas!
El nombre de la columna no puede comenzar con un dígito; por lo tanto, en el siguiente ejemplo, usaré id_1, id_2 e id_3 en lugar de 1, 2 y 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
El ejemplo anterior supone que conoce de antemano sus ID y hay muy pocos de ellos, por lo que no es gran cosa escribir manualmente unas cuantas líneas con SUM(...) para cada ID
Si este no es el caso, primero puede generar la consulta anterior mediante programación ejecutando la consulta debajo
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, obtendrá una cadena como la siguiente
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
Entonces, ahora simplemente cópielo y péguelo en el Editor de consultas y ejecútelo
puede ver un ejemplo similar aquí - https://stackoverflow.com/a/36623258/5221944