使用来自一个 table 的数据来过滤第二个 table 而无需加入
Using data from one table to filter a second table without joining
我有 table 的数据,我需要根据更新日期从中提取数据。我需要获取更新列的最大日期,然后 select 我的标准,基于前 7 天的那一天。我通过创建一个存储更新日期的临时 table 来实现这一点。
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';
然后我只想从 table 中提取我指定日期范围内的数据。我是这样做的,因为这个数据目前不是每天更新的。所以我需要报告它更新的那一天,以及之前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';
我尝试通过加入 table 来做不同的事情,但这不起作用。我最终只需要知道最大日期是多少,然后将其用作我的范围。
您可以尝试这样的操作:
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;
我有 table 的数据,我需要根据更新日期从中提取数据。我需要获取更新列的最大日期,然后 select 我的标准,基于前 7 天的那一天。我通过创建一个存储更新日期的临时 table 来实现这一点。
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';
然后我只想从 table 中提取我指定日期范围内的数据。我是这样做的,因为这个数据目前不是每天更新的。所以我需要报告它更新的那一天,以及之前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';
我尝试通过加入 table 来做不同的事情,但这不起作用。我最终只需要知道最大日期是多少,然后将其用作我的范围。
您可以尝试这样的操作:
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;