我有一个带有非空“数量”(十进制)和“状态”(int)列的产品表,并且我使用以下案例表达式在该表上创建了一个视图:
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 提供默认值并强制不可为空,但没有有意义的默认值,据我了解,这首先不应该发生。有什么想法吗?