Oracle SQL-Abfrage zum Zusammenfassen von Statistiken mit GROUP BY

Ich habe eine Oracle-Tabelle mit folgenden Daten:

<code>ID   BATCH   STATUS
1    1       0
2    1       0
3    1       1
4    2       0
</code>

Das ist,ICH WÜRDE Wenn dies der Primärschlüssel ist, gibt es für jede "Charge" mehrere Zeilen, und in jeder Zeile wird ein Statuscode angezeigtSTATUS Säule. Es gibt eine Reihe anderer Spalten, aber dies sind die wichtigsten.

Ich muss eine Anfrage schreiben, die das zusammenfasstStatuscodes für jedenStapel; Es gibt drei mögliche Werte in der Spalte STATUS, 0, 1 und 2, und ich möchte eine Ausgabe, die ungefähr so ​​aussieht:

<code>BATCH  STATUS0  STATUS1  STATUS2
1      2        1        0
2      1        0        0
</code>

Diese Zahlen wären Zählungen; für Charge 1 gibt es

2 Datensätze woSTATUS ist auf 0 gesetzt1 Eintrag woSTATUS ist auf 1 gesetzt undkeine Aufzeichnungen woSTATUS ist auf 0 gesetzt.

Für Charge 2 gibt es

1 Eintrag woSTATUS wird auf 0 gesetzt undkeine Aufzeichnungen woSTATUS ist auf 1 oder 2 gesetzt.

Gibt es eine Möglichkeit, dies in einer Abfrage zu tun, ohne die Abfrage für jeden Statuscode neu schreiben zu müssen? Das heißt, ich kann eine solche Abfrage leicht schreiben und dreimal ausführen:

<code>SELECT batch, COUNT(status)
FROM table
WHERE status = 0
GROUP BY batch
</code>

Ich könnte das ausführen, dann erneut ausführen, wobei status = 1 und erneut status = 2, aber ich hoffe, dies in einer Abfrage zu tun.

Wenn es einen Unterschied macht, abgesehen von derSTATUS Spalte gibt esEin weiterer Spalte, die ich auf die gleiche Weise zusammenfassen möchte - ein weiterer Grund, warum ich die SELECT-Anweisung nicht nach der SELECT-Anweisung ausführen und alle Ergebnisse zusammenfassen muss.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage