1

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

基本上我的主表中有一个电话号码列。我需要从另一个表中插入一个号码,但另一个表有 2 个不同的电话号码列,具体取决于呼叫类型。例如:

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

所以我需要做的是指定将哪个号码放入表 1 中的 phoneNumber 列。如果呼叫类型为 1,我想插入来自 FINALLYCALLEDPARTYNO 的号码,但如果呼叫类型为 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 做到这一点,还是有另一种方法?寻找最理想的方法来做到这一点,以便我可以将其添加到更大的插入语句中。

4

1 回答 1

2

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

INSERT INTO table1(phoneNumber)
SELECT CASE calltype WHEN 1 THEN finallycalledpartyno
                     WHEN 2 THEN callingpartyno
       END
FROM   table2
于 2017-08-31T16:17:21.333 回答