Удалите GROUP BY
:
SELECT sum(case when need_By > sysdate and status not in (30,40,50) then 1 else 0 end) AS active,
sum(case when need_by < sysdate and status not in (30,40,50) then 1 else 0 end) AS past
FROM discrepancy;
MySQL также имеет удобную сокращенную запись, чтобы вы могли напрямую подсчитывать логические выражения:
SELECT SUM(need_By > sysdate and status not in (30,40,50)) AS active,
SUM(need_by < sysdate and status not in (30,40,50)) AS past
FROM discrepancy;
И, наконец, вы можете переместить NOT IN
в предложение WHERE
, что может улучшить производительность:
SELECT SUM(need_By > sysdate) AS active,
SUM(need_by < sysdate) AS past
FROM discrepancy
WHERE status NOT IN (30, 40, 50);
EDIT:
В Oracle последний будет:
SELECT SUM(CASE WHEN need_By > sysdate THEN 1 ELSE 0 END) AS active,
SUM(CASE WHEN need_by < sysdate THEN 1 ELSE 0 END) AS past
FROM discrepancy
WHERE status NOT IN (30, 40, 50);