Poniższe zapytanie liczy sume wystąpień danego zdarzenia dla każdej godziny
z ostatnich trzech dni - zapytanie korzysta z dwóch tabel ( req_log, res_log ).
Pierwsza tabela zawiera Requesty, druga responsy.
SELECT to_char(trunc(DATE_TIME,'HH24'),'DD.MM HH24'), nvl(sum(AMOUNT),0) FROM(
SELECT res_log.local_time DATE_TIME, 1 AMOUNT FROM req_log, res_log
WHERE req_log.local_time BETWEEN sysdate-3 AND sysdate AND req_log.REQ_ID=res_log.RESP_ID AND (res_log.time_res - req_log.event_time)/1000<10000 AND res_log.RESULT_ID=1
UNION ALL
SELECT time_domain,0 FROM t_domain WHERE time_domain BETWEEN sysdate-3 AND sysdate
)
GROUP BY trunc(DATE_TIME,'HH24')
zwraca mi (dzien, miesiac, godzina wynik):
31.03 09 1
01.04 01 8
01.04 02 3
01.04 09 1
Jak widać są przeskoki. Jak zrobić żeby ich nie BYło a na miejsce gdzie nic nie ma zapytanie zwracało wartość 0. Jak widać powyżej funkcja nvl nie działa w tym przypadku
ponieważ zapytanie nie zwraca wartości NULL. Proszę o pomoc.