В следующей таблице
ID AMT
-------------
347 0.00
575 725.00
362 125.00
540 80.00
Я хочу использовать оператор case в предложении where для фильтрации результатов на основе двух входных параметров для моего сохраненного процесса.Вот как выглядит мой SP
CREATE PROC SS(@AMT_GREATER_THAN INT, @AMT_LESS_THAN INT)
AS
BEGIN
SELECT ID, AMT FROM TABLE
WHERE
1 = CASE WHEN @AMT_GREATER_THAN IS NOT NULL AND @AMT_LESS_THAN IS NOT
NULL AND AMT BETWEEN @AMT_LESS_THAN AND @AMT_GREATER_THAN
THEN 1
WHEN @AMT_GREATER_THAN IS NOT NULL AND AMT > @AMT_GREATER_THAN
THEN 1
WHEN @AMT_LESS_THAN IS NOT NULL AND AMT < @AMT_LESS_THAN
THEN 1
ELSE 0 END
END
Когда я запускаю SP, я ожидаю, что результат будет
EXEC SS 50, 150 //OUTPUT should be 80 and 125
EXEC SS null, 150 //OUTPUT should be 0, 80 and 125
EXEC SS 50, null//OUTPUT should be 80 and 125, 725
Но я получаю все четыре значения столбца AMTМожет кто-нибудь указать мне, где проблема.Заранее спасибо.