Я нахожу некоторые проблемы с запросом, который возвращает сумму поля от таблицы для всех записей, которые соблюдают определенные условия. Я ожидал не получать "Никакой записи, найденные', когда не было никаких записей, но вместо этого я получаю пустой результат.
SQL> SELECT * FROM DUAL WHERE 1=2;
no rows selected
SQL> SELECT SUM(dummy) FROM DUAL WHERE 1=2;
SUM(DUMMY)
----------
SQL>
Там какой-либо путь не состоит в том, чтобы получить запись в этом случае?
Как насчет этого:
select my_sum
from
(SELECT SUM(dummy) as my_sum FROM DUAL WHERE 1=2)
where
my_sum is not null
«Я ожидал получить сообщение« Записи не найдены », когда записей не было, но вместо этого я получаю нулевой результат».
Затем выполните
SELECT SUM(dummy) FROM DUAL WHERE 1=2 HAVING COUNT(*) > 0
Это есть, укажите, что вы хотите вернуть сводку только там, где были учтенные строки.
SELECT SUM(dummy) FROM DUAL WHERE 1=2 HAVING SUM(dummy) IS NOT NULL
аналогично, но COUNT (*) вернет сводную строку, если были только строки, для которых фиктивная была равна нулю, а последняя не будет.
Вы можете отфильтровать результаты null
с помощью , имеющего
SELECT SUM(dummy) FROM DUAL WHERE 1=2 HAVING SUM(dummy) IS NOT NULL
] Нет - это конструктивное поведение используемой здесь СУБД, которое, по крайней мере, для меня имеет смысл, поскольку вы ищете сумму, а не необработанные данные