【问题标题】:COALESCE function returns no rowsCOALESCE 函数不返回任何行
【发布时间】:2015-06-13 02:02:00
【问题描述】:

我对 DB2 中的 COALESCE 函数有疑问。

我的声明:

SELECT COALESCE(ATTR,'NA') FROM TABLE WHERE %condition% 

如果根据条件找到 ATTR,则 SELECT 返回 ATTR 的值,但如果未找到 ATTR,则我希望 SELECT 返回“NA”。但是,它不返回任何行。

感谢您的帮助。

【问题讨论】:

  • 如果你简单地执行“SELECT * FROM TABLE WHERE %condition%”会发生什么?
  • coalesce() 适用于单个列值 - 它不能神奇地从任何地方创建一行。
  • 如果我执行“SELECT * FROM TABLE WHERE %condition%”,则返回一行 3 列,我的观点是当没有行时返回 VALUE 'NA'
  • 如果没有行,那么 COALESCE() 不能对任何行执行(因为没有被选择)。

标签: sql select db2 coalesce


【解决方案1】:

神奇地创建一条线:

SELECT DISTINCT 'NA' AS ATTR FROM TABLE WHERE NOT EXISTS(SELECT 1 FROM TABLE WHERE %condition%)
UNION
SELECT ATTR FROM TABLE WHERE %condition%;

说明:如果子查询没有返回任何行,则选择“NA”并将其与子查询本身联合。任何一个联合集都是空的,因此它可以提供您想要的。

【讨论】:

  • 谢谢。我知道这是解决这个问题的方法。但是我不能使用它。因为该语句包含许多表名并且驱动程序抛出异常该语句包含太多表名。
猜你喜欢
  • 1970-01-01
  • 2016-11-10
  • 1970-01-01
  • 1970-01-01
  • 2019-09-14
  • 2017-08-09
  • 2018-08-27
  • 2019-07-26
  • 1970-01-01
相关资源
最近更新 更多