ORACLE - ВЫБРАТЬ с помощью функции агрегирования и MONTHS_BETWEEN - PullRequest
0 голосов
/ 02 февраля 2020

У меня проблемы с отображением правильных результатов. Моя формула должна отображать тех людей, которые имеют сумму SAL + COMM> 1200 и проработали не менее 40 лет. Я думаю, что это из-за функции NVL внутри. Может кто-нибудь сказать мне, в чем проблема?

SELECT ENAME 
FROM SCOTT.EMP 
WHERE NVL(SUM(SAL), 0) + NVL(SUM(COMM), 0) > 1200 
AND MONTHS_BETWEEN(SYSDATE, HIREDATE) > 480

1 Ответ

2 голосов
/ 02 февраля 2020

Вам не нужно SUM (как функция):

where nvl(sal, 0) + nvl(comm, 0) > 1200
  and hiredate < add_months(trunc(sysdate), -40 * 12)
...