我有一个View,它有两个使用UNION ALL返回数据的SELECT语句。
SELECT column1, column2, column3, column4
FROM table1
UNION ALL
SELECT column1, column2, column3, column4
FROM table2
因此,table1中的所有列都应该显示数据,因为column4 ='A'。但是,在table2中,column2应返回blanks / null,因为column4 ='B'。请记住,table2中的column2包含数据,但在View中,我们只想返回空白/空值。
答案 0 :(得分:1)
您可以选择文字而非列数据:
SELECT column1, column2, column3, column4
FROM table1
UNION ALL
SELECT column1, '-', column3, column4
FROM table2
我上面使用了'-'
,但您也可以选择NULL
或' '
或0
(需要匹配第一个SELECT的列数据类型)。
答案 1 :(得分:1)
你想要这样的东西。当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