Я пытаюсь сторнировать логический столбец на основе заданного условия в MSSQL (MSSQL Server 2017)
Я пытался использовать IIF и CASE WHEN, но у меня возникли некоторые синтаксические ошибки.
Метод 1: IIF
SELECT
IIF(Completed_Date > @EndDate AND Completed = 'True', --Conditions
Completed = 'False', Completed)
AS
Completed_Filter
Метод 2: Случай, когда
CASE WHEN
Completed_Date > @EndDate AND Completed = 'True'
THEN
Completed = 'False'
ELSE
Completed END
AS
Completed_Filter
Тип данных поля столбца: [ЗАВЕРШЕНО] [бит] NULL.
Выполнение простого фильтра запроса
SELECT * FROM TABLE WHERE Completed != 'False'
не выдает ошибок, т. Е. Логический столбец работает должным образом.
Однако меня смущает, почему приведенные выше 2 фрагмента кода приводят к синтаксическим ошибкам, которые возникают при знаке равенства в Completed = 'False'
.
Я ожидаю обратить логическое значение с 'True'
на 'False'
в случае, если Completed_Date > @EndDate
, если нет, просто оставьте завершенное логическое значение таким, как есть.
Буду признателен за любую помощь, спасибо