【发布时间】: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的值应该被认为是没有意义的)。您能否提供示例起始数据以及您希望在此基础上看到的结果?我无法弄清楚您真正在寻找什么。