我有以下sql语句:
COUNT(CASE
WHEN CALCULATE_CALLBACK_DURATION(CREATED, LAST_UPD) IS NULL THEN CALCULATE_CALLBACK_DURATION(AA.THIS_DATE_OPENING, LAST_UPD) /60 /60 < 2 THEN 1
ELSE CALCULATE_CALLBACK_DURATION(CREATED, LAST_UPD) /60 /60 < 2 THEN 1
END) AS Calculatedsum
其中CALCULATE_CALLBACK_DURATION(CREATED, LAST_UPD)
是一个返回总和(以秒为单位)的函数
但是我收到了错误
缺少关键字
我做错了什么?是否有可能以这种方式计算?
更新
我也尝试了以下内容:
CASE WHEN CALCULATE_CALLBACK_DURATION(AA.THIS_DATE_OPENING, LAST_UPD) /60 /60 < 2
THEN 1 END
ELSIF CALCULATE_CALLBACK_DURATION(CREATED, LAST_UPD) /60 / 60 <2 THEN 1 END IF) AS Calculatedsum
问题是如果计算结果为null,那么它应该以另一种方式计算总和并检查是否小于2然后将其计为+1
答案 0 :(得分:1)
你错过了另一个WHEN
(连续两个THEN
)。此
WHEN CALCULATE_CALLBACK_DURATION(CREATED, LAST_UPD) IS NULL -- MISSING VALUE
THEN CALCULATE_CALLBACK_DURATION(AA.THIS_DATE_OPENING, LAST_UPD) /60 /60 < 2 THEN 1
-- ^-- Wrong keyword
应该是
COUNT(CASE
WHEN CALCULATE_CALLBACK_DURATION(CREATED, LAST_UPD) IS NULL THEN
CASE
WHEN (CALCULATE_CALLBACK_DURATION(AA.THIS_DATE_OPENING, LAST_UPD) /60 /60 < 2)
OR (CALCULATE_CALLBACK_DURATION(CREATED, LAST_UPD) /60 /60 < 2) THEN 1
ELSE 0 END
ELSE 0
END) AS Calculatedsum