Sql Oracle管理历史信息和新条目
我有一个每周获取刷新数据的查询。我想将新数据添加到包含历史记录的表中,并确定条目是否是新的 例如: 表1:Sql Oracle管理历史信息和新条目,sql,oracle,Sql,Oracle,我有一个每周获取刷新数据的查询。我想将新数据添加到包含历史记录的表中,并确定条目是否是新的 例如: 表1: col value --- ----- c1 v1 c2 v1 c5 v5 表1历史记录: date col value new_entry ---- --- ----- --------- 02/06/2021 c1 v1 NO 02/06/2021 c2
col value
--- -----
c1 v1
c2 v1
c5 v5
表1历史记录:
date col value new_entry
---- --- ----- ---------
02/06/2021 c1 v1 NO
02/06/2021 c2 v2 NO
02/06/2021 c3 v3 YES
01/06/2021 c1 v1 YES
01/06/2021 c2 v2 YES
01/06/2021 c4 v4 YES
预期产出:
date col value new_entry explanation
---- --- ----- --------- -----------
03/06/2021 c1 v1 NO C1 entry already existed on 02/06/2021
03/06/2021 c2 v2 NO C2 entry already existed on 02/06/2021
03/06/2021 c5 v5 YES C5 entry did not exist on 02/06/2021
02/06/2021 c1 v1 NO C1 entry already existed on 01/06/2021
02/06/2021 c2 v2 NO C2 entry already existed on 01/06/2021
02/06/2021 c3 v3 YES C3 entry did not exist on 01/06/2021
01/06/2021 c1 v1 YES First c1 entry ever
01/06/2021 c2 v2 YES First c2 entry ever
01/06/2021 c4 v4 YES First c4 entry ever
您可以首先从
table1
中选择行,分别添加日期列,并从table1\u hist
中选择具有子查询值的new\u条目,然后使用union all
将结果与table1\u hist
的现有行组合
create table table1(col varchar(50), value varchar(50));
insert into table1 values('c1', 'v1');
insert into table1 values('c2', 'v1');
insert into table1 values('c5', 'v5');
create table table1_hist(dates date, col varchar(50), value varchar(50), new_entry varchar(50));
insert into table1_hist values(date '2021-06-02', 'c1', 'v1', 'NO');
insert into table1_hist values(date '2021-06-02', 'c2', 'v2', 'NO');
insert into table1_hist values(date '2021-06-02', 'c3', 'v3', 'YES');
insert into table1_hist values(date '2021-06-01', 'c1', 'v1', 'YES');
insert into table1_hist values(date '2021-06-01', 'c2', 'v2', 'YES');
insert into table1_hist values(date '2021-06-01', 'c4', 'v4', 'YES');
查询:
select date '2021-06-03' dates,col,value,
(case when exists(select 1 from table1_hist th where th.col=t.col) then 'NO' else 'YES' end )new_entry
from table1 t
union all
select * from table1_hist
输出:
日期
上校
价值
新项目
03-6-21
c1
v1
不
03-6-21
c2
v1
不
03-6-21
碳五
v5
对
02-JUN-21
c1
v1
不
02-JUN-21
c2
v2
不
02-JUN-21
c3
v3
对
01-JUN-21
c1
v1
对
01-JUN-21
c2
v2
对
01-JUN-21
补体第四成份
v4
对
逻辑不清晰,请为您想要的内容提供清晰的解释output@eshirvana请在我的预期输出中找到我的解释。仍然不清楚,例如2021年6月1日c5、v5不存在,2021年6月2日我只想比较前一天。C5在2021年6月2日不存在,这就是为什么我把它作为新的。非常感谢!!!不客气。最美好的祝福。