【发布时间】:2021-09-27 02:16:50
【问题描述】:
我们有两个表 TABLE1 和 TABLE2。
TABLE1 有 3 列,即 ROLL、LINE、AMT
CREATE TABLE TABLE1( ROLL NUMBER(4), LINE NUMBER(2), AMT NUMBER(4,4) );
INSERT INTO TABLE1 VALUES(101, 1, 50);
INSERT INTO TABLE1 VALUES(102, 2, 60);
ROLL LINE AMT
-------------------------
101 1 50
102 2 60
TABLE2 有 6 列,即 ROLL、LINE、AMT_PRI_CD、AMT_PRI、AMT_SEC_CD、AMT_SEC。
CREATE TABLE TABLE2 VALUES(ROLL NUMBER(4), LINE NUMBER(2), AMT_PRI_CD VARCHAR2(3), AMT_PRI NUMBER(4,4), AMT_SEC_CD VARCHAR2(3), AMT_SEC NUMBER(4,4) );
INSERT INTO TABLE2 VALUES(101, 1, ‘ABCD’, 50, ‘BCDE’, 40);
INSERT INTO TABLE2 VALUES(102, 2, ‘BCDA’, 40, ‘BCED’, 60);
ROLL LINE AMT_PRI_CD AMT_PRI AMT_SEC_CD AMT_SEC
---------------------------------------------------------------
101 1 ABCD 50 BCDE 40
102 2 BCDA 40 BCED 60
结果表应该是
ROLL LINE AMT_PRI_CD AMT_PRI AMT_SEC_CD AMT_SEC
---------------------------------------------------------------
101 1 ABCD 50 ABCD 50
102 2 BCED 60 BCED 60
从上面两张表中,我们可以看出ROLL & LINE列是常见的,
如果 TABLE1 中 AMT 列的值等于 TABLE2 中 AMT_PRI 列的值,则通过填充与 AMT_PRI 和 AMT_PRI_CD 列值相同的 AMT_SEC 和 AMT_SEC_CD 列值来选择 TABLE2 中的所有列。
如果 TABLE1 中 AMT 列的值等于 TABLE2 中 AMT_SEC 列的值,则通过填充与 AMT_SEC 和 AMT_SEC_CD 列值相同的 AMT_PRI 和 AMT_PRI_CD 列值来选择 TABLE2 中的所有列。
我们需要使用 CASE WHEN 查询吗?
【问题讨论】: