1

我有以下 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

问题是如果计算结果为空,那么它应该以另一种方式计算总和并检查是否小于 2,然后将其计为 +1

4

1 回答 1

1

你错过了另一个WHEN(你有两个THENs 连续)。这个

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
于 2013-04-16T14:07:21.327 回答