oracle - 使用多个类似条件使用另一个表中的值更新一个巨大的表
问题描述
我有一个表REVERSE
,列为
ID ORG_ID FULL_ID DATE_REV
-- ------ ------- --------
X1 11% NULL
X2 22% NULL
X3 33% NULL
X4 44% NULL
X5 55% NULL
我有另一个表MASTER
,列为
FULL_ORG DATE
-------- --------
11ABC 20190101
22DEF 20190101
33GHI 20190101
44XYZ 20190101
55MNO 20190101
如何MASTER
使用 ORG_ID from找到 FULL_ORG 和相应的 DATE 值,并相应地REVERSE
更新 FULL_ID 字段和 DATE_REV 字段。
请帮忙..
结果应如下所示。
TXN ORG_TXN FULL_ORG DATE
--- ------- -------- --------
1 11% 11ABC 20190101
2 22% 22DEF 20190101
3 33% 33GHI 20190101
4 44% 44XYZ 20190101
5 55% 55MNO 20190101
解决方案
这是您可能会考虑的一种选择:
SQL> with
2 rev (id, org_id) as
3 (select 'X1', '11%' from dual union all
4 select 'X2', '22%' from dual union all
5 select 'X3', '33%' from dual union all
6 select 'X4', '44%' from dual union all
7 select 'X5', '55%' from dual
8 ),
9 mas (full_org, c_date) as
10 (select '11ABC', 20190101 from dual union all
11 select '22DEF', 20190101 from dual union all
12 select '33GHI', 20190101 from dual union all
13 select '44XYZ', 20190101 from dual union all
14 select '55MNO', 20190101 from dual
15 )
16 select regexp_substr(r.id, '\d+$') txn,
17 r.org_id,
18 m.full_org,
19 m.c_date
20 from rev r join mas m on regexp_substr(r.org_id, '^\d+') = regexp_substr(m.full_org, '^\d+');
TXN ORG FULL_ C_DATE
-------- --- ----- ----------
1 11% 11ABC 20190101
2 22% 22DEF 20190101
3 33% 33GHI 20190101
4 44% 44XYZ 20190101
5 55% 55MNO 20190101
SQL>
推荐阅读
- python - Python Pandas Group by Count Pivot of multiple column
- java - 如何解决 localhost 错误?
- laravel - 使用 guzzle http 发出发布请求时出错
- meta - Will adding a robots meta tag stop Google Analytics from tracking?
- perl - 有没有比 Perl 中的 Image::Compare 更快的比较图像的方法?
- java - 用更少的代码在 Java 中初始化变量的更好方法是什么?
- javascript - JSON 的分页导致 HTML/Javascript 页面
- php - 网络服务器上的转换应用程序不断超时
- angular - RxJS/Observable:如何设置管道方法的排序
- c - 如何编译可以使用内核中的读/写提示的应用程序?