Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Добавления к запросу поля по условию  [new]
eXeLe
Member

Откуда:
Сообщений: 65
Есть несколько таблиц, допустим ученики и задачки.
В таблице задачек у нас указано, кем решалась задачка и решил он ее или нет (поле task_done = 0 или 1).
Нужно сделать выборку по ученикам, сколько ему всего было поставлено задач, сколько он решил, а сколько не решил.

Для начала делаю так для вывода списка учеников и кол-во их задач:

SELECT y.name AS 'Ученик', COUNT(z.zadachi) AS 'Всего задачек'
FROM ycheniki y
INNER JOIN zadachki z ON z.ychenik_ID=y.ychenik_ID
GROUP BY y.name


как нам добавить к этому запросу два поля, где будет аналогично COUNT(z.zadachi) кол-во задач, но удовлетворяющих условию task_done = 0 или 1?
23 ноя 12, 12:26    [13518328]     Ответить | Цитировать Сообщить модератору
 Re: Добавления к запросу поля по условию  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
eXeLe,

SELECT 
    y.name AS 'Ученик', 
    COUNT(z.zadachi) AS 'Всего задачек',    
    COUNT(CASE WHEN task_done = 0 THEN 1 ELSE 0 END) AS task_done_0,
    COUNT(CASE WHEN task_done = 1 THEN 1 ELSE 0 END) AS task_done_1,
FROM ycheniki y
INNER JOIN zadachki z ON z.ychenik_ID=y.ychenik_ID
GROUP BY y.name
23 ноя 12, 12:29    [13518372]     Ответить | Цитировать Сообщить модератору
 Re: Добавления к запросу поля по условию  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
eXeLe,

поправил код:
SELECT 
    y.name AS 'Ученик', 
    COUNT(z.zadachi) AS 'Всего задачек',    
    COUNT(CASE WHEN task_done = 0 THEN z.zadachi ELSE NULL END) AS task_done_0,
    COUNT(CASE WHEN task_done = 1 THEN z.zadachi ELSE NULL END) AS task_done_1,
FROM ycheniki y
INNER JOIN zadachki z ON z.ychenik_ID=y.ychenik_ID
GROUP BY y.name
23 ноя 12, 12:31    [13518395]     Ответить | Цитировать Сообщить модератору
 Re: Добавления к запросу поля по условию  [new]
eXeLe
Member

Откуда:
Сообщений: 65
trew,

да, работает, спасибо
23 ноя 12, 12:38    [13518472]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить