我创建了一个表w_provider_remove
,以便将Provider_no
和max(prov_effective_Date)
记录保存在w_providers_load
中,因为我有重复的提供程序,但有些已过期。我稍后尝试加入w_providers_load
表和w_provider_Remove
表,并将记录插入w_providers_main
表。问题是我回到了许多记录,因为事实证明我对具有相同生效日期的特定提供商有多个记录。如何限制它以便只插入其中一个?或者也许有另一种方法可以解决这个问题我不需要3个表来完成这个任务
Truncate w_provider_remove;
insert into w_provider_remove
select provider_no as provider_no, max(PROV_DATE_EFFECTIVE) as prov_date_effective
from w_provider_load
group by provider_no;
Truncate w_provider_main;
INSERT INTO w_provider_main
Select l.*
from w_provider_load as l
inner JOIN w_provider_remove as r on l.provider_no = r.provider_no AND l.prov_date_effective = r.prov_date_effective;
答案 0 :(得分:0)
如果要将表中的行限制为每个提供者的一个生效日期,请创建唯一索引:
create unique index w_provider_load_provider_effectivedate on w_provider_load(provider_no, prov_effective_date);
如果同一提供商的两条记录在加载中具有相同的生效日期,则会生成错误。
你可以为主表做同样的事情:
create unique index w_provider_main_provider_effectivedate on w_provider_main(provider_no, prov_effective_date);