У меня есть следующий SQL заявление:Oracle двойной подсчет случай
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)
это функция, которая возвращает сумму (в секундах)
Однако я получаю ошибку
Отсутствует ключевое слово
Что я делаю неправильно? и можно ли даже рассчитывать таким образом?
UPDATE
я также попытался следующие:
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
Проблема заключается в том, что если функция возвращает нулевое значение она должна попробовать функцию, но с двумя новыми параметрами и он должен затем подсчитать их еще запустить дело еще Короче говоря, я не хочу получить нуль, но вместо этого избегаю нуля –
@MarcRasmussen Посмотрите на редактирование - вам нужна вложенная 'CASE'. – dasblinkenlight
два других случая, которые равны 0, не должны быть CALCULATE_CALLBACK_DURATION (CREATED, LAST_UPD)/60/60? –