根据其他两个列值的差异从另一个 table 插入一个值

Inserting a value from another table based on the difference of two other column values

我正在尝试将列值添加到我当前的 insert/select 语句中,但我不确定我是否可以使用 CASE WHEN 子句或者我是否需要以其他方式执行此操作。

基本上我的主 table 中有一个 phone 数字列。我需要从另一个 table 中插入一个数字,但另一个 table 有 2 个不同的 phone 数字列,具体取决于呼叫类型。例如:

CALLINGPARTYNO | FINALLYCALLEDPARTYNO | CALLTYPE
------------------------------------------------
1234567890        0987654321              1
0987654321        1234567890              2

所以我需要做的是指示将哪个号码放入 table 中的 phoneNumber 列 1. 如果呼叫类型为 1,我想插入来自 FINALLYCALLLEDPARTYNO 的号码但是如果呼叫类型是 2,我想插入来自 CALLINGPARTYNO 的号码。

伪代码,如果有帮助的话:

Insert into table1(phoneNumber)
SELECT case when /*if calltype = 1, then select FINALLYCALLEDPARTYNO*/
    ELSE /*if calltype=2 then select CALLINGPARTYNO */ as phoneNumber

from table2;

有没有办法用 CASE 做到这一点,或者有其他方法吗?寻找执行此操作的最理想方法,以便我可以将其添加到更大的插入语句中。

您可以在 insert-select 语句中使用任何可以在 select 语句中使用的语法结构:

INSERT INTO table1(phoneNumber)
SELECT CASE calltype WHEN 1 THEN finallycalledpartyno
                     WHEN 2 THEN callingpartyno
       END
FROM   table2