Unten ist für BigQuery!
Bitte beachten Sie:Ihre Erwartungen bezüglich der Ausgabespaltennamen sind nicht korrekt!
Der Spaltenname darf nicht mit einer Ziffer beginnen - daher werde ich im folgenden Beispiel id_1, id_2 und id_3 anstelle von 1, 2 und 3 verwenden
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
Das obige Beispiel geht davon aus, dass Sie Ihre IDs im Voraus kennen und es nur sehr wenige davon gibt, daher ist es keine große Sache, manuell ein paar Zeilen mit SUM(...) für jede ID
zu schreibenWenn dies nicht der Fall ist, können Sie zuerst die obige Abfrage programmgesteuert generieren, indem Sie die folgende Abfrage
ausführenSELECT '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
)
Als Ergebnis erhalten Sie eine Zeichenfolge wie unten
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
Kopieren Sie es jetzt einfach, fügen Sie es in den Abfrage-Editor ein und führen Sie es aus
Sie können ein ähnliches Beispiel hier sehen - https://stackoverflow.com/a/36623258/5221944