[英]How does UNION ALL return blanks in one column and data in another?
我有一個視圖,它具有兩個使用UNION ALL返回數據的SELECT語句。
SELECT column1, column2, column3, column4
FROM table1
UNION ALL
SELECT column1, column2, column3, column4
FROM table2
因此,由於column4 ='A',因此應該認為table1中的所有列都顯示數據。 但是,在表2中,列2應該返回空白/空值,因為列4 =“ B”。 請記住,表2中的column2確實包含數據,但是在View中,我們只想返回空白/空值。
您可以選擇文字而不是列數據:
SELECT column1, column2, column3, column4
FROM table1
UNION ALL
SELECT column1, '-', column3, column4
FROM table2
我'-'
上面使用了'-'
,但是您也可以選擇NULL
或' '
或0
(需要匹配第一個SELECT的列數據類型)。
您想要這樣的東西嗎? 當Column4
為'B'時,將column2
屏蔽為NULL
或blanks
。 可以使用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.