2017-08-31 87 views
1

我想將列值添加到我當前的insert/select語句中,但我不確定是否可以使用CASE WHEN子句或if我需要以另一種方式做到這一點。從另一個表插入一個基於另外兩個列值的差異的值

基本上我在我的主表中有一個電話號碼列。我需要從另一個表格中插入一個號碼,但另一個表格有兩個不同的電話號碼列,具體取決於呼叫類型。例如:

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

所以我需要做的是決定哪個號碼被放進我的phoneNumber的列於表1。如果呼叫類型是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做到這一點還是有另一種方式?尋找最理想的方式來做到這一點,以便我可以將它添加到更大的插入語句中。

回答

2

您可以使用,你可以在SELECT語句中使用任何語法結構中插入-select語句:

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

完美,謝謝!因爲,我正在用其他選定的值連續做這件事,我可以在''''END'''語句中添加'''AS phoneNumber'''嗎? –

+1

@TomN。是。 「CASE ... END」中的所有內容都是一個很長的表達式,您可以像使用其他列一樣對其應用一個名稱。 – rutter

+0

@TomN。是的你可以。整個「case ... end」是一個單一的(儘管很複雜)的表達。請注意,添加這樣的別名只會幫助您更輕鬆地閱讀查詢。它沒有功能效果(假設你的查詢沒有一堆直接實際使用這個別名的其他部分)。 – Mureinik

相關問題