COALESCE和NULL

时间:2015-02-12 13:50:52

标签: sql oracle coalesce

我想创建一个SQL查询(使用Oracle),我将两个值组合在一起,每个列存在于不同的表中(它们由CODE连接)。这是我到目前为止的查询:

SELECT COALESCE(a.SERIES1,b.SERIES2)
FROM TABLE1 a, TABLE2 b
WHERE a.CODE = b.CODE

但是,当我将列连接在一起时,我也想返回null。我想我只得到SERIES1 = SERIES2的实例......

理想情况下,我希望得到以下内容:

  • 如果SERIES1不为null,则返回SERIES1
  • 如果SERIES2不为null,则返回SERIES2
  • 如果SERIES1和SERIES2都为null,则返回null

我希望我明白这一点,并且我正在使用正确的术语......

谢谢!

1 个答案:

答案 0 :(得分:2)

我认为问题不在于COALESCE,而在于您进行加入的方式。您可能正在寻找外部联接,而您进行了内部联接

尽管Oracle有自己的语法来执行外连接(例如,通过列出两个表并将连接条件放在WHERE子句中),但应首选ANSI语法:

SELECT COALESCE(a.SERIES1,b.SERIES2)
FROM TABLE1 a
FULL OUTER JOIN TABLE2 b ON a.CODE = b.CODE