У меня есть таблица Oracle с данными, которые выглядят так:
ID BATCH STATUS
1 1 0
2 1 0
3 1 1
4 2 0
То есть ID - это первичный ключ, для каждой «партии» будет несколько строк, и каждая строка будет иметь код состояния в столбце STATUS . Есть множество других столбцов, но это важные.
Мне нужно написать запрос, который суммирует коды состояния для каждой партии ; Есть три возможных значения, которые могут быть указаны в столбце STATUS, 0, 1 и 2, и я хотел бы вывод, который выглядит примерно так:
BATCH STATUS0 STATUS1 STATUS2
1 2 1 0
2 1 0 0
Эти цифры будут считаться; для партии 1 существует
- 2 записи, где STATUS установлено на 0
- 1 запись, где STATUS установлено в 1, а
- нет записей, где STATUS установлено в 0.
Для партии 2 есть
- 1 запись, где STATUS установлено на 0, а
- нет записей, где STATUS установлено в 1 или 2.
Есть ли способ, которым я могу сделать это в одном запросе, без необходимости переписывать запрос для каждого кода состояния? то есть я могу легко написать такой запрос и выполнить его три раза:
SELECT batch, COUNT(status)
FROM table
WHERE status = 0
GROUP BY batch
Я мог бы запустить это, затем запустить его снова, где status = 1, и снова, где status = 2, но я надеюсь сделать это в одном запросе.
Если это имеет значение, кроме столбца STATUS есть еще один столбец , который я мог бы захотеть обобщить аналогичным образом - еще одна причина, по которой я не хочу необходимо выполнить оператор SELECT после оператора SELECT и объединить все результаты.