Просто добавьте = 1
после закрытия CASE
END
.
Select * from EPLMethods SP WHERE EPLMEthodId=@EplMethodId
AND
(
CASE WHEN (ISNULL(SP.Data.value('(/*/subject)[1]', 'bit'), 0)= 1 AND ISNULL(SP.Data.value('(/*/answers)[1]', 'nvarchar(max)'), '') = '')
THEN 1
ELSE
Case WHEN (SELECT COUNT (*) FROM dbo.GetEPLData3(@EplMethodId, 1, SP.Data.value('(/*/Answers/AnswersList/Entry[@key="number"]/value)[1]', 'nvarchar(max)')))> 0 Then
1
ELSE
0
END
END
= 1
)
. Как говорится в сообщении об ошибке, вы пытаетесь использовать число, в котором SQL Server ожидает логическое значение -в отличие от некоторых других языков, в SQL Server нет неявного преобразования числа в логическое значение, поэтому его нужно преобразовать самостоятельно.
SQL Fiddle .