我有一个数据表,我需要根据其更新日期从中提取数据。我需要获取更新列的最大日期,然后根据前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';
然后,我只想实际从表中提取我指定日期范围内的数据。我正在这样做,因为该数据当前不是每天更新。因此,我需要报告更新的日期以及前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';
我尝试了与表进行不同的操作,但这不起作用。我最终只需要知道最大日期,然后将其用作我的范围即可。
答案 0 :(得分:1)
您可以尝试以下操作:
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;