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