UNION ALL - 在一列中返回空白,在另一列中返回数据

时间:2014-10-03 03:24:34

标签: sql oracle union-all

我有一个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中,我们只想返回空白/空值。

2 个答案:

答案 0 :(得分:1)

您可以选择文字而非列数据:

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

我上面使用了'-',但您也可以选择NULL' '0(需要匹配第一个SELECT的列数据类型)。

答案 1 :(得分:1)

你想要这样的东西。当Column4为'B'掩码column2NULLblanks时。可以使用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