У меня есть эта хранимая процедура, которой я передаю параметр даты, который может быть NULL. Логика c Я пытаюсь понять, когда параметр Date равен NULL, тогда должен быть выбран максимум столбца даты, но когда параметр не равен NULL, параметр должен быть передан в качестве значения.
CREATE PROCEDURE [rdm].[Param_Load_Test2]
@Retro_Date DATE
AS
BEGIN
SELECT
CASE
WHEN @Retro_Date IS NULL
THEN MAX(lnd.FILE_DATE)
ELSE @Retro_Date
END AS TEST_DATE
INTO
#LoadTest1234
FROM
TWV.TABLE_WITH_VALUES AS lnd
GROUP BY
FILE_DATE;
SELECT TEST_DATE
FROM #LoadTest1234
END
GO
Теперь, когда я тестирую приведенный выше фрагмент кода с помощью оператора EXE C для случая NULL, я получаю неправильные значения. Случай Not NULL работает нормально.
EXEC rdm.Param_Load_Test2 NULL
>> 2018-03-31
>> 2018-05-31
Я ожидаю только одно значение, которое является 2018-05-31, но оно возвращает 2 записи. Что я делаю не так?