【发布时间】:2012-03-12 16:44:05
【问题描述】:
初始数据:有一段查询,为了推理可以简化为下一段
SELECT MAX((CASE
WHEN to_char(sysdate, 'DY') = 'SAT' THEN 1
WHEN to_char(sysdate, 'DY') = 'SUN' THEN 1
ELSE 0 END)) status
FROM mytable WHERE mycondition;
问题: 似乎如果 mycondition 导致空结果集的前两个条件不能正常工作并返回 null 而不是 1。如果我只是替换查询的最后一行下一个
FROM dual;
前两个条件完美无缺。
条件:应该只是一个查询,没有ifs、var defs等。
如何执行这种类型的选择但不返回空值?
P.S.:可以使用 NVL/NVL2 但这确实使事情变得复杂。
提前致谢。
【问题讨论】:
-
您的查询没有从 mytable 返回任何字段。为什么要包含它?
-
@Olaf,我在那里写了 if,这意味着在某些情况下确实如此。
-
您的复制品可能与原始版本不同,因为在我的情况下它失败了。