У меня есть хранимая процедура, где я запрашиваю данные за некоторый промежуток времени. Так что я написал ниже запрос будет выполняться в хранимой процедуре:Получить значение по умолчанию, если нет данных для запроса?
SET @quer = CONCAT('INSERT INTO tmp (`time_interval`, `cnt`, `dat`, `txn_id`) (SELECT DATE_FORMAT(\'', tmpStart, '\', \'%H:%i\') as time_interval , COUNT(v.id) as cnt
, date(v.timestamp) as dat, \"', _txn_id, '\" as txn_id FROM vehicle v WHERE v.timestamp BETWEEN \'', tmpStart, '\'
AND \'', tmpEnd, '\' ', _where_clause, ' GROUP BY time_interval)')
Но проблема, я хочу, чтобы вставить 0 в течение интервала времени, для которого не существует никакого значения.
Actual : for 01:00 - 02:00 = 12
for 03:00 - 04:00 = 10
Expected:for 01:00 - 02:00 = 12
for 02:00 - 03:00 = 0
for 03:00 - 04:00 = 10
Возможно, кто-нибудь может предложить, как я могу изменить запрос, чтобы получить этот результат.
Спасибо.
Я отредактировал вот так: COALESCE (COUNT (v.id), 0) как cnt, но он все тот же. Я делаю это неправильно? – GuruKulki
Это странно. Coalesce должен работать, как шарм. Какой результат возвращает ваш запрос? Мне особенно интересно о столбце cnt. Вы также можете попробовать синтаксис case. 'select (case COUNT (v.id) null [ИЛИ WHATEVER INVALID COUNT WER RETURN] THEN 0 ELSE COUNT (v.id) END) as cnt ...' – Dapter20