Использование данных из одной таблицы для фильтрации второй таблицы без присоединения - PullRequest
0 голосов
/ 09 июля 2020

У меня есть таблица данных, из которой мне нужно извлечь данные в зависимости от даты ее обновления. Мне нужно получить максимальную дату столбца обновления, а затем выбрать мои критерии на основе этого дня за предыдущие 7 дней. Я добился этого, создав временную таблицу, в которой хранится дата обновления.

drop table last_upd;
create temporary last_upd as 
select to_date(max(updt_ts)) as last_update from tableA
    where creat_dt > '2020-01-01';

Затем я хочу фактически извлечь свои данные из таблицы только для указанного мной диапазона дат. Я делаю это так, b c в настоящее время эти данные не обновляются ежедневно. Поэтому мне нужно сообщить день, когда он был обновлен, и его содержимое за предыдущие 7 дней. В настоящее время я делаю это, выполняя вышеуказанный запрос, чтобы определить дату, а затем обновляю жестко запрограммированную дату во втором запросе, чтобы отразить этот диапазон. Я пытаюсь понять, как лучше всего это сделать, не обновляя свой код каждый раз.

drop table table_Data;
create temporary table table_data as 
select *
from TableA
where to_date(updt_ts) between date_add('2020-06-23',-7) and '2020-06-23';

Я пробовал делать разные вещи с присоединением к таблице, но это не сработало. В конечном итоге мне просто нужно знать, какая максимальная дата, а затем использовать это как мой диапазон.

1 Ответ

1 голос
/ 10 июля 2020

Можно попробовать примерно так:

select *
from tableA as a,
  (select to_date(max(updt_ts)) as last_update 
  from tableA
  where creat_dt > '2020-01-01') as b
where to_date(updt_ts) between date_add(b.last_update,-7) and b.last_update;
...