У меня есть таблица Product с ненулевыми столбцами «количество» (десятичное число) и «статус» (int), и я создал представление для этой таблицы со следующим выражением регистра:
SELECT P.ProductTypeId,
(CASE WHEN P.StatusId IN (5, 8) THEN 0 ELSE -P.Quantity END) AS Quantity,
...
FROM Product P
ProductTypeId правильно выводится как ненулевое. Тем не менее, столбец Количество этого представления выводится как обнуляемый, даже если нижележащие столбцы не обнуляются. Это не имеет никакого смысла для меня.
Я мог бы использовать ISNULL / COALESCE, чтобы предоставить значение по умолчанию в этом случае и принудительно установить ненулевое значение, но не существует значимого значения по умолчанию, и это не должно происходить в первую очередь из того, что я понимаю. Есть идеи, что происходит?