使用一个表中的数据过滤第二个表而不进行联接

时间:2020-07-09 20:47:45

标签: sql join hive hql

我有一个数据表,我需要根据其更新日期从中提取数据。我需要获取更新列的最大日期,然后根据前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';

我尝试了与表进行不同的操作,但这不起作用。我最终只需要知道最大日期,然后将其用作我的范围即可。

1 个答案:

答案 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;