У меня есть таблица данных, в которую я хочу выбрать несколько полей, фильтрующих по дате.
Если результат пустой, основываясь на sysdate, мне нужно решить, будет ли он в порядке или нет.
Чтобы сделать это, я создаю синтетическую таблицу с полем флага, которое, как я ожидаю, будет заполнено в наборе результатов, даже если в моей фактической таблице на эту дату нет данных.
WITH const AS (
SELECT
'NAME 1' AS name,
(CASE WHEN TO_TIMESTAMP(TO_CHAR(CURRENT_TIMESTAMP, 'HH24:MI:SS'), 'HH24:MI:SS') < TO_TIMESTAMP('01:00:00', 'HH24:MI:SS') THEN 1 ELSE 0 END) AS flag
FROM
Data_Table
UNION
SELECT
'ANY NAME' AS name,
(CASE WHEN TO_TIMESTAMP(TO_CHAR(CURRENT_TIMESTAMP, 'HH24:MI:SS'), 'HH24:MI:SS') < TO_TIMESTAMP('01:00:00', 'HH24:MI:SS') THEN 1 ELSE 0 END) AS flag )
SELECT Data_Table.sysname, const.flag FROM const LEFT OUTER JOIN Data_Table ON Data_Table.sysname = const.name WHERE Data_Table.date=TO_CHAR(sysdate, 'DD-MM-YYYY')
Я ожидаю получить результаты, как показано ниже:
sysname flag
Name1 1
(null) 1
Но получается пустой результат, если нет данных с этой датой.