Проверка функции SQL MAX (), возвращающей значение null


Моя проблема заключается в том, что если моя таблица пуста или столбец, в котором я использую функцию max, не имеет указанного значения, то почему sqlDataReader.неужели это правда?

Это дает нулевую запись...как мне решить эту проблему??

Заранее благодарю.

4 2

4 ответа:

Агрегатная функция типа MAX () всегда возвращает по одной строке на группу. В вашем случае ваша группа - это вся таблица. Таким образом, вы получаете набор результатов в одну строку с максимальным значением. Поскольку у вас нет данных в таблице, максимальное значение не определено, следовательно, равно NULL.

Для лучшего понимания попробуйте заменить MAX на COUNT. Это также вернет одну строку, но со значением 0. Я думаю, что это более интуитивно и поможет вам лучше понять, что происходит.

Преобразуйте запрос в производную таблицу и отфильтруйте значения null в основном запросе.

select T.MaxValue
from (
     -- Your query goes here
     select max(Value) as MaxValue
     from YourTable
     where SomeCol > 10
     ) as T
where T.MaxValue is not null

Вы можете использовать:

Выберите сверху(выбрать количество(*) из ТБЛ) максимум(поле) из ТБЛ

Или используйте предложение HAVING, потому что HAVING можно использовать с агрегатными функциями:

select max(Value) from YourTable where SomeCol > 10
HAVING max(Value) is not null