Определите вычисляемый столбец в представлении как не нуль - PullRequest
0 голосов
/ 25 сентября 2011

Теперь у меня есть представление с вычисляемыми столбцами. Мне нужно, чтобы вычисляемые столбцы были равны "not null" для переключателя света.

Я пытался cast(), но все еще не могу получить вычисленные столбцы равными "not null" Является ли это возможным?

Это мой SQL:

SELECT dbo.Nop_Manufacturer.Name,
       CAST(SUM(dbo.Nop_OrderProductVariant.PriceExclTax) AS INT)           AS
       SALES,
       CAST(MONTH(dbo.Nop_Order.PaidDate) AS INT)                           AS
       paid_month,
       CAST(YEAR(dbo.Nop_Order.PaidDate) AS INT)                            AS
       paid_year,
       CAST(COUNT(dbo.Nop_OrderProductVariant.OrderProductVariantID) AS INT)AS
       num_prod_sold
FROM   dbo.Nop_ProductVariant
       INNER JOIN dbo.Nop_OrderProductVariant
         ON dbo.Nop_ProductVariant.ProductVariantId =
            dbo.Nop_OrderProductVariant.ProductVariantID
       INNER JOIN dbo.Nop_Product
         ON dbo.Nop_ProductVariant.ProductID = dbo.Nop_Product.ProductId
       INNER JOIN dbo.Nop_Product_Manufacturer_Mapping
                  INNER JOIN dbo.Nop_Manufacturer
                    ON dbo.Nop_Product_Manufacturer_Mapping.ManufacturerID =
                       dbo.Nop_Manufacturer.ManufacturerID
         ON dbo.Nop_Product.ProductId =
            dbo.Nop_Product_Manufacturer_Mapping.ProductID
       INNER JOIN dbo.Nop_Order
         ON dbo.Nop_OrderProductVariant.OrderID = dbo.Nop_Order.OrderID
WHERE  ( NOT ( dbo.Nop_Order.PaidDate IS NULL ) )
GROUP  BY dbo.Nop_Manufacturer.Name,
          MONTH(dbo.Nop_Order.PaidDate),
          YEAR(dbo.Nop_Order.PaidDate)  

1 Ответ

3 голосов
/ 25 сентября 2011

CAST -ing как INT не будет ничего влиять на воспринимаемую обнуляемость вычисляемых столбцов.Вместо этого вам нужно обернуть их в ISNULL.

например, ISNULL(YEAR(dbo.Nop_Order.PaidDate),0)

Это задокументировано в последнем абзаце здесь

Компонент Database Engine автоматически определяет обнуляемость вычисляемых столбцов на основе используемых выражений.Результат большинства выражений считается обнуляемым, даже если присутствуют только ненулевые столбцы, поскольку возможные недопустимые значения или переполнения также приведут к нулевым результатам.Используйте функцию COLUMNPROPERTY со свойством AllowsNull, чтобы исследовать обнуляемость любого вычисляемого столбца в таблице.Выражение со значением NULL можно преобразовать в ненулевое выражение, указав ISNULL(check_expression, constant), где константа - ненулевое значение, заменяющее любой нулевой результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...