У меня есть таблица 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 этого представления имеет вид выводится как допускающий значение NULL, даже если базовые столбцы не допускают значения NULL. Для меня это не имеет никакого смысла.
Я мог бы использовать ISNULL / COALESCE, чтобы предоставить значение по умолчанию в этом случае и принудительно не допускать обнуления, но нет значимого значения по умолчанию, и этого не должно происходить в первом место, насколько я понимаю. Есть идеи, что происходит?