Существует два вида операторов CASE: «простой» и «искомый».В вашем коде вы комбинируете эти два вида утверждений, и это дает неверные результаты.
Простой:
SELECT CASE SR.[ContainerId] WHEN NULL THEN 0 ELSE 1 END AS [IsSampleReceived]
FROM SomeTable SR where SomeCondition
Поиск:
SELECT CASE WHEN SR.[ContainerId] IS NULL THEN 0 ELSE 1 END AS [IsSampleReceived]
FROM SomeTable SR where SomeCondition
ВВаш исходный запрос выполняет простую версию, сравнивая значение SR. [ContainerId] со значением SR.[ContainerId] IS NULL
.Результат этого сравнения всегда будет ложным, поэтому всегда было выбрано условие else.