Здравствуйте! СУБД MsSql Server 2003, есть запрос:
SELECT roomtype, COUNT(*)
FROM rooms
WHERE roomtype = 'люкс' AND dirty = 'Y'
GROUP BY roomtype
Ну и, собственно, проблема - если условие не выполняется, запрос вообще ничего не возвращает. А нужно получить ноль:
люкс 0
Пробовал с CASE морочиться, но не получилось. Кто знает, как заставить его вернуть ноль?
tw1ggyz: сглупил. Вас же интересует количество комнат типа люкс? Т.е. то, что тип комнаты = люкс Вы и так знаете? SELECT 'люкс', ISNULL((SELECT COUNT(*) FROM rooms WHERE roomtype = 'люкс' AND dirty = 'Y'),0)
Макс: есть курсор, в котором все номера, так что можно сказать что да, знаю в каждый момент, какой тип номера проверяю. Попробую ваш способ завтра, тогда отпишусь, получилось или нет. В прошлый раз остановился на том, что перед запросом обнулял переменные, в которые выбирается количество, и если запрос ничего не возвращал, то они оставались нулевыми. Но это кажется не всегда работало.
Честно говоря, я всю жизнь думал, что count, как и прочие агрегативные функции, работает только при наличии группировки. Сейчас возможности проверить ваш способ нет, завтра проверю и напишу, получилось или нет.