Задать вопрос

Как заставить COUNT(*) вернуть ноль?

Здравствуйте! СУБД MsSql Server 2003, есть запрос:

SELECT roomtype, COUNT(*)
FROM rooms
WHERE roomtype = 'люкс' AND dirty = 'Y'
GROUP BY roomtype

Ну и, собственно, проблема - если условие не выполняется, запрос вообще ничего не возвращает. А нужно получить ноль:
люкс 0
Пробовал с CASE морочиться, но не получилось. Кто знает, как заставить его вернуть ноль?
  • Вопрос задан
  • 3501 просмотр
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
MaxDukov
@MaxDukov
впишусь в проект как SRE/DevOps.
SELECT roomtype, ISNULL(COUNT(*),0)
FROM rooms
WHERE roomtype = 'люкс' AND dirty = 'Y'
GROUP BY roomtype
Ответ написан
Melkij
@Melkij
PostgreSQL DBA
А зачем вы группируете по полю, если заранее известно, что разных значений там будет ровно одно?

SELECT COUNT(*)
FROM rooms
WHERE roomtype = 'люкс' AND dirty = 'Y'
Ответ написан
Vestail
@Vestail
Software Engineer
SELECT 'люкс' as roomtype, COALESCE( (SELECT COUNT(*)
FROM rooms
WHERE roomtype = 'люкс' AND dirty = 'Y'
GROUP BY roomtype), 0)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы