Я не могу написать это, пожалуйста, помогите. Ниже будет дано представление о том, чего я пытаюсь достичь.
WITH monthly_data AS
(SELECT MAX(some_date) latest_dt FROM monthly_data
)
SELECT SUM(data)
FROM daily_data
WHERE (monthly_data.latest_dt IS NULL
OR daily_data.some_date > monthly_data.latest_dt)
таблица: месячные_данные
id some_date
007 08-MAY-2018
таблица: daily_data
данные некоторых дат
07-MAY-2018 1
08-MAY-2018 1
09-MAY-2018 1
Ожидаемый результат
Case 1: 1 row exist in table monthly_data.
Query should return 1.
Case 2: No rows exist in table montly_data.
Query should return 3.
Соединения в приведенном выше запросе некорректны, но в основном написаны, чтобы дать вам представление о том, что я пытаюсь сделать. Кроме того, когда я говорю, что в таблице month_data нет строк, это упрощенное объяснение. В текущем запросе есть другие условия, которые отфильтровывают данные.
Это должно пройти процедуру
Редактировать
Благодаря @ D-Shih я нахожусь в гораздо лучшем положении, где я начал с использования запроса существующего предложения, который он предоставил.
С точки зрения производительности, можем ли мы написать это быстрее? Я думаю, что что-то, что можно оценить ниже, будет самым быстрым
WITH CTE AS
( SELECT MAX(some_date) latest_dt FROM monthly_data
)
SELECT SUM(d.some_data)
FROM daily_data d
WHERE (d.some_date > '08-MAY-2018'
OR '08-MAY-2018' IS NULL)