2012-10-29 68 views
0

我有2個表如下,並從f_table相應插入數據到ftable。如果field_3存在,我想將field_3插入field3,否則將field_4插入field3如果ELSE在子查詢SQL Server

我該怎麼做?非常感謝任何答覆。

CREATE TABLE ftable 
(
field1 int null, 
field2 int null, 
field3 char(1) 
); 

CREATE TABLE f_table 
(
field_1 int null, 
field_2 int null, 
field_3 char(1), 
field_4 char(1) 
); 

INSERT INTO ftable (field1, field2, field3) 
    SELECT (field_1, field_2, field_3) 
    FROM f_table; 
+2

如果'field_3'存在,*是什麼意思*?該列是表的一部分 - 它**總是**存在.... –

+0

是否存在field_3的數據。對不起,讓你感到困惑。 –

回答

3

不知道你真的如果field_3存在的意思 - 因爲它是表的一部分,該列總是存在...

猜你大概的意思是:如果它是NOT NULL - 在這種情況下,使用此CASE聲明:

INSERT INTO ftable (field1, field2, field3) 
    SELECT 
     field_1, field_2, 
     CASE 
      WHEN field_3 IS NOT NULL THEN field_3 
      ELSE field_4 
     END 
    FROM f_table; 

更新:按w0lf的建議,你也可以使用:

INSERT INTO ftable (field1, field2, field3) 
    SELECT 
     field_1, field_2, 
     ISNULL(field_3, field_4) 
    FROM f_table; 

使得它更有點緊湊 - 但一點點的可讀性,在我看來。但是,這將工作得很好 - 如果field_3爲NULL,則插入field_4

+1

我認爲用isnull代替 – GolfWolf

1

假設你的意思是field_3NULL,這是使用COALESCE的好去處:

INSERT INTO ftable (field1, field2, field3) 
SELECT field_1, field_2, COALESCE(field_3,field_4) 
FROM f_table; 

COALESCE

返回其參數中第一個非空表達式。

+0

感謝您的回答 –