All,
Ik heb een probleempje met een query.
Het doel is het volgende:
check of er in een 2-tal tabellen data van de afgelopen 2 uur aanwezig is. Is dit niet het geval, dan moet er een pre-defined text als output gegeven worden. Dit werkt allemaal.
Echter, als er wel output is (dus case when count(*) = 0 wordt geëvalueerd als FALSE) moet er geen output gegeven worden - 0 rows, dus. Op dit moment krijgen we echter een lege cell/lege string als output.
de query is als volgt:
De reden dat we echt geen output moeten hebben ipv lege cel/string is dat deze query via een tooltje om het half uur moet gaan draaien, en bij output deze doormailen als attachment. Dit is voor mij en mij collega op applicatiebeheer een trigger om in de logs te duiken, omdat er hoogstwaarschijnlijk problemen zijn met het EDI verkeer van de klant naar ons. Zoals de query nu is krijgen we altijd output, en zouden we dus ieder half uur de attachment moeten openen om te checken of het een alert is, of enkel een lege cell/string, waardoor de query praktisch nutteloos is at the moment.
De oorzaak is vrijwel zeker de "ELSE NULL", maar hoe ik dit moet aanpassen om het gewenste resultaat te bereiken durf ik niet te zeggen
Ik heb een probleempje met een query.
Het doel is het volgende:
check of er in een 2-tal tabellen data van de afgelopen 2 uur aanwezig is. Is dit niet het geval, dan moet er een pre-defined text als output gegeven worden. Dit werkt allemaal.
Echter, als er wel output is (dus case when count(*) = 0 wordt geëvalueerd als FALSE) moet er geen output gegeven worden - 0 rows, dus. Op dit moment krijgen we echter een lege cell/lege string als output.
de query is als volgt:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| select case when count(*) = 0 then 'Check FTP logs - no traffic received in last 2 hours' else NULL end AS Status from ( SELECT distinct inbox_trans_old.file_id, datetime_arrival FROM inbox_trans_old, transaction_status, inbox_old, inbox_trans_tag_old WHERE substr(inbox_trans_old.file_id,1,3) IN ('ADV','ORD','ITM','CUS') AND to_char(inbox_old.datetime_arrival, 'YYYY-MM-DD HH-MM-SS') between to_char(sysdate -(2/24),'YYYY-MM-DD HH-MM-SS') and to_char(sysdate,'YYYY-MM-DD HH-MM-SS') AND (inbox_trans_old.trans_status = transaction_status.trans_status(+)) AND (inbox_trans_old.file_id = inbox_old.file_id) AND (inbox_trans_old.file_id = inbox_trans_tag_old.file_id AND inbox_trans_old.transaction_id = inbox_trans_tag_old.transaction_id AND inbox_trans_tag_old.tag = '1004') UNION ALL SELECT distinct inbox_trans.file_id, datetime_arrival FROM inbox_trans, transaction_status, inbox, inbox_trans_tag WHERE substr(inbox_trans.file_id,1,3) IN ('ADV','ORD','ITM','CUS') AND to_char(inbox.datetime_arrival, 'YYYY-MM-DD HH-MM-SS') between to_char(sysdate - (2/24),'YYYY-MM-DD HH-MM-SS') and to_char(sysdate,'YYYY-MM-DD HH-MM-SS') AND (inbox_trans.trans_status = transaction_status.trans_status(+)) AND (inbox_trans.file_id = inbox.file_id) AND (inbox_trans.file_id = inbox_trans_tag.file_id AND inbox_trans.transaction_id = inbox_trans_tag.transaction_id AND inbox_trans_tag.tag = '1004') ) |
De reden dat we echt geen output moeten hebben ipv lege cel/string is dat deze query via een tooltje om het half uur moet gaan draaien, en bij output deze doormailen als attachment. Dit is voor mij en mij collega op applicatiebeheer een trigger om in de logs te duiken, omdat er hoogstwaarschijnlijk problemen zijn met het EDI verkeer van de klant naar ons. Zoals de query nu is krijgen we altijd output, en zouden we dus ieder half uur de attachment moeten openen om te checken of het een alert is, of enkel een lege cell/string, waardoor de query praktisch nutteloos is at the moment.
De oorzaak is vrijwel zeker de "ELSE NULL", maar hoe ik dit moet aanpassen om het gewenste resultaat te bereiken durf ik niet te zeggen
Your lack of planning is not my emergency