【问题标题】:case when sum ( condition )= sum (condition) and condition then using db2 system database当 sum ( condition )= sum (condition) and condition then using db2 system database 的情况
【发布时间】:2014-11-02 02:56:13
【问题描述】:

晚安,我在 DB2 中工作,但在使用 case when 进行查询时遇到了一些麻烦 我必须找到一种方法来进行查询,以定义某个类别的记录是否仅在关系的必填字段是必需的并且已标记为选中时才有效,但在这种情况下,某些注册表是空的,然后我必须排除,我有一个这样的查询:

 Select (case (sum(category_id) where required='true' and selected='true') = sum(category_id) where required='true' then 'Yes'
     else 'no'
    from category_table

问题是,在某些类别中,必填字段都是假的(这意味着不存在)然后我必须设置一个条件,比如 sum 等于 cero,但我总是遇到语法错误。我有这样的东西,

 Select (case (sum(category_id) where required='true' and selected='true') = sum(category_id) where required='true' and (count(category_id) where required='true' != 0 ) then 'Yes'
     else 'no'
    from category_table

我在 db2 中遇到了这个问题,遗憾的是我无法听到原始查询,因为我的工作代理不让我将电子邮件传递到外部,甚至从那里登录网页。

如果有任何帮助,我将不胜感激。

【问题讨论】:

  • 该查询的语法无效(WHEN 缺失,WHERE 在那里无效),但可能无论如何都不会工作(SUM(...) 是一个聚合函数,但是系统将不知道哪些行用于required/selected)。总结一个叫做category_id的东西听起来像是错误的事情(id的值应该被认为是没有意义的)。您能否提供示例起始数据以及您希望在此基础上看到的结果?我无法弄清楚您真正在寻找什么。

标签: syntax db2 sum case


【解决方案1】:

您是否尝试过使用 VALUE 函数?如果没有行符合 case 条件,那么您将在结果中得到零。

【讨论】:

  • VALUE(...)COALESCE(...) 的 DB2 同义词,最终的执行结果与 CASE 语句相同。它不会神奇地添加一些默认值;它选择列表中第一个不为 null 的操作数,如果没有指定非 null 参数,则返回 null。 OP 得到一个 语法错误,这不会真正受到影响。我不确定这是否能解决 OP 的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-01
  • 2018-09-06
  • 2015-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多