У меня есть таблица со следующей схемой: (Дата, Имя, Состояние), где State может принимать значения «Обрабатывается», «Активно» и «Закрыто».Примеры записей:
|------------+---------+------------|
| Date | Name | Status |
|------------+---------+------------|
| 2011-07-01 | Alice | Processing |
| 2011-07-01 | Alice | Active |
| 2011-07-02 | Alice | Closed |
| 2011-07-01 | Bob | Active |
| 2011-07-02 | Charlie | Processing |
|------------+---------+------------|
Я использую следующий запрос для подсчета количества учетных записей в разных статусах:
select date, status, count(distinct name)
from accounts
group by date, status
И это дает следующее:
2011-07-01 Processing 1
2011-07-01 Active 2
2011-07-02 Active 1
2011-07-02 Closed 1
Как получить данные в столбцах?т. е.
2011-07-01 2 1 0
2011-07-02 1 0 1
Если в первом столбце указана дата, во втором столбце указано количество учетных записей в состоянии «Активно», в третьем столбце указано количество учетных записей в состоянии «Обработка», а в последнем столбце указано количество учетных записей в состоянии «Закрыто»?Единственное, о чем я могу думать, это написать три подзапроса для каждого из статусов и выполнить родительский запрос для выбора каждого из них.Но это не кажется очень расширяемым (например, если мне нужно добавить новый статус, я должен изменить родительский запрос и добавить еще один подзапрос).