ВЫБЕРИТЕ возвраты СУММЫ строка, когда не будет никаких записей

Я нахожу некоторые проблемы с запросом, который возвращает сумму поля от таблицы для всех записей, которые соблюдают определенные условия. Я ожидал не получать "Никакой записи, найденные', когда не было никаких записей, но вместо этого я получаю пустой результат.

SQL> SELECT * FROM DUAL WHERE 1=2;

no rows selected
SQL> SELECT SUM(dummy) FROM DUAL WHERE 1=2;

SUM(DUMMY)
----------


SQL>

Там какой-либо путь не состоит в том, чтобы получить запись в этом случае?

13
задан APC 13 March 2010 в 03:08
поделиться

4 ответа

Как насчет этого:

select my_sum
from
(SELECT SUM(dummy) as my_sum FROM DUAL WHERE 1=2)
where
my_sum is not null
5
ответ дан 1 December 2019 в 20:42
поделиться

«Я ожидал получить сообщение« Записи не найдены », когда записей не было, но вместо этого я получаю нулевой результат».

Затем выполните

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 (*) вернет сводную строку, если были только строки, для которых фиктивная была равна нулю, а последняя не будет.

19
ответ дан 1 December 2019 в 20:42
поделиться

Вы можете отфильтровать результаты null с помощью , имеющего

SELECT SUM(dummy) FROM DUAL WHERE 1=2 HAVING SUM(dummy) IS NOT NULL
1
ответ дан 1 December 2019 в 20:42
поделиться

] Нет - это конструктивное поведение используемой здесь СУБД, которое, по крайней мере, для меня имеет смысл, поскольку вы ищете сумму, а не необработанные данные

1
ответ дан 1 December 2019 в 20:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: