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

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

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

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

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

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)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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