Oracle SQL Query do podsumowania statystyk za pomocą GROUP BY
Mam tabelę Oracle z danymi, które wyglądają tak:
<code>ID BATCH STATUS 1 1 0 2 1 0 3 1 1 4 2 0 </code>
To jest,ID jest kluczem podstawowym, będzie wiele wierszy dla każdej „partii”, a każdy wiersz będzie miał kod statusu wSTATUS kolumna. Istnieje kilka innych kolumn, ale są to ważne.
Muszę napisać zapytanie, które podsumujekody statusu dla każdegopartia; są trzy możliwe wartości, które mogą się znaleźć w kolumnie STATUS, 0, 1 i 2, a ja chciałbym, aby dane wyjściowe wyglądały mniej więcej tak:
<code>BATCH STATUS0 STATUS1 STATUS2 1 2 1 0 2 1 0 0 </code>
Te liczby byłyby liczone; dla partii 1 są
2 rekordy gdzieSTATUS jest ustawione na 01 rekord gdzieSTATUS jest ustawiony na 1 ibrak zapisów gdzieSTATUS jest ustawione na 0.Dla partii 2 jest
1 rekord gdzieSTATUS jest ustawione na 0 ibrak zapisów gdzieSTATUS jest ustawiony na 1 lub 2.Czy istnieje sposób, aby to zrobić w jednym zapytaniu, bez konieczności przepisywania zapytania dla każdego kodu statusu? tj. mogę łatwo napisać takie zapytanie i uruchomić je trzy razy:
<code>SELECT batch, COUNT(status) FROM table WHERE status = 0 GROUP BY batch </code>
Mogę to uruchomić, a następnie uruchomić ponownie, gdzie status = 1, i ponownie gdzie status = 2, ale mam nadzieję, że zrobię to w jednym zapytaniu.
Jeśli to robi różnicę, opróczSTATUS kolumna jestinne kolumna, którą chciałbym podsumować w ten sam sposób - kolejny powód, dla którego nie chcę wykonywać instrukcji SELECT po instrukcji SELECT i łączyć wszystkie wyniki.