SQL-представление выводит столбец, допускающий значение NULL, из ненулевой таблицы?

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

6
задан naasking 17 May 2011 в 16:56
поделиться