我试图将以下逻辑设置为除数。我需要使用NVL()来避免除以零错误。我需要对案例陈述进行明确的计算。
这就是我所拥有的:
(NVL(COUNT(DISTINCT
CASE WHEN ({field1} = 'a' OR {field1} = 'b' OR
{field1} = 'c' OR {field1} = 'd') AND
({field2} = 'a' OR {field2} = 'b') AND
({field3} > TO_DATE('01-JAN-2017', 'DD-MON-YYYY'))
THEN 1 END), 1))
我的语法有问题,但无法解决。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
我将大量IN
更改为更简单的COUNT(DISTINCT
CASE
WHEN field1 IN ('a','b','c','d')
AND field2 IN ('a','b')
AND field3 > TO_DATE('01-JAN-2017', 'DD-MON-YYYY')
THEN 1
END)
COUNT(DISTINCT ...)
NVL
不会返回null,因此删除了多余的COUNT(
CASE
WHEN field1 IN ('a','b','c','d')
AND field2 IN ('a','b')
AND field3 > TO_DATE('01-JAN-2017', 'DD-MON-YYYY')
THEN 1
END)
现在,上面的结果是0或1。
你可能想要这个没有区别:
case when (expression) <> 0 then dividend/(expression) end
因为它是一个除数,所以它不能为0,所以你必须为此设置保护措施。除数为0时的一个合理输出为空。实现这一目标的一种方法是:
{{1}}