2014-10-03 102 views
1

我有一個View有兩個使用UNION ALL返回數據的SELECT語句。UNION ALL - 返回一列中的空白和另一列中的數據

SELECT column1, column2, column3, column4 
FROM table1 
UNION ALL 
SELECT column1, column2, column3, column4 
FROM table2 

因此,table1中的所有列都應該顯示數據,因爲column4 ='A'。但是,在表2中,column2應該返回空白/空值,因爲column4 ='B'。請記住,table2中的column2包含數據,但在View中,我們只想返回空白/空值。

+0

提供樣品數據和所需的輸出。 – 2014-10-03 03:27:25

回答

1

你想要這樣的東西。當Column4是'B'掩碼column2時爲NULLblanks。可以使用DECODE或甚至CASE WHEN

SELECT column1, column2, column3, column4 
FROM table1 
UNION ALL 
SELECT column1, DECODE(column4,'B',NULL,column2), column3, column4 
FROM table2 

多個值:

SELECT column1, column2, column3, column4 
FROM table1 
UNION ALL 
SELECT column1, 
     CASE WHEN column4 IN ('B','D','O','R'..) THEN 
      NULL 
     ELSE 
     column2 
     END, 
     column3, 
     column4 
FROM table2 
+0

正是我需要的。那麼,如果我在第4列中有多個值需要驗證NULL返回值,該怎麼辦?在這種情況下,我們在上面的查詢中已經有了'B'。我們如何指定附加值,如D,R,O等? – user2425909 2014-10-03 03:46:20

1

您可以選擇文字而不是列數據:

SELECT column1, column2, column3, column4 
FROM table1 
UNION ALL 
SELECT column1, '-', column3, column4 
FROM table2 

我上面使用'-',但你也可以選擇NULL' '0(需要匹配的第一個SELECT的列數據類型)。

+0

太好了。你的解決方案也適用。謝謝,蒂洛。 – user2425909 2014-10-03 03:48:59

相關問題