Один метод в T-SQL:
declare @Threshold float;
if (exists (select top 1 * from [DB]..[table1] P where P.RowId IS NOT NULL))
begin
select @Threshold = [Value]
from [DB]..[table1]
end;
else select @Threshold = 0.99;
Лично я думаю, что это довольно многословно. Вы можете просто сделать:
declare @Threshold float;
select @Threshold = coalesce(max([Value]), 0.99)
from [DB]..[table1]
where P.RowId is not null;
Это работает, потому что запрос агрегации без group by
всегда возвращает одну строку. Если ничего не найдено, тогда столбцы NULL
.
Это не на 100% эквивалентно, поскольку строка может существовать со значением NULL
. Эта версия будет назначать 0.99
, а не NULL
(как у вас). Я подозреваю, что такое поведение может быть тем, что вы действительно хотите.