2010-12-07 3 views
1

Как я могу изменить свой запрос для возврата 0, если count (*) равен NULL?Возврат нуля, если count (*) равен NULL

select monthname(timestamp), year(timestamp), count(*) 
from largehits 
where largeID = someid 
    and (month(timestamp)<=somemonth 
    and month(timestamp)>=somemonth 
    and year(timestamp)<=someyear 
    and year(timestamp)>=someyear) 
group by month(timestamp), year(timestamp) 
order by timestamp asc 

Спасибо!

+6

`COUNT()` никогда не может вернуть NULL. – BoltClock 2010-12-07 17:48:19

+0

Вы имели в виду наоборот? Возврат NULL, когда COUNT() возвращает 0? Простой CASE сделает это за вас. Я не знаю, зачем было это делать. – manneorama 2010-12-07 17:52:56

ответ

2

BoltClock замечает, что COUNT никогда не может быть NULL.

Вообще-то вы бы просто использовали COALESCE(expression,0) для этого типа проблем.

Редактировать: После пояснения в комментариях вам нужно будет использовать outer join в таблице чисел, чтобы получить необходимый эффект.