Ci-dessous, c'est pour BigQuery !
Remarque :vos attentes concernant les noms de colonne de sortie ne sont pas correctes !
Le nom de la colonne ne peut pas commencer par un chiffre - donc dans l'exemple ci-dessous - j'utiliserai id_1, id_2 et id_3 au lieu de 1, 2 et 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'exemple ci-dessus suppose que vous connaissez à l'avance vos identifiants et qu'il y en a très peu, ce n'est donc pas grave d'écrire manuellement quelques nombres de lignes avec SUM(...) pour chaque identifiant
Si ce n'est pas le cas, vous pouvez d'abord générer la requête ci-dessus par programme en exécutant la requête ci-dessous
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
)
en conséquence - vous obtiendrez une chaîne comme ci-dessous
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
Donc, maintenant, copiez-le et collez-le dans l'éditeur de requête et exécutez-le
vous pouvez voir un exemple similaire ici - https://stackoverflow.com/a/36623258/5221944