【发布时间】:2016-04-25 11:35:59
【问题描述】:
我的查询没有给出正确的输出。
我也尝试了不同的方法,例如 CTE,但没有任何帮助。
我正在尝试编写 View 以显示可用产品的数量,但由于 StockCloseInventory 表中的某些数据不可用,即使某些产品的记录可用,它也会显示为 0。
这是我的查询:
SELECT TOP (100) PERCENT
SOI.InStockPrdID
, SOI.ProdName
, SOI.TradeDrugId
, ISNULL(SOI.Quantity, 0) AS INQTY
, ISNULL(SCI.QuantitySold, 0) AS OUTQTY
, ISNULL(SOI.Quantity, 0) - ISNULL(SCI.QuantitySold, 0) AS AQTY
, SOI.UnitPrice
FROM dbo.StockInventory AS SOI
LEFT OUTER JOIN dbo.StockCloseInventory AS SCI
ON SOI.InStockPrdID = SCI.InStockPrdID
AND SOI.SoldOut <> 1
LEFT OUTER JOIN dbo.vwTradeDrug AS VTD
ON SOI.TradeDrugId = VTD.TradeDrugId
ORDER BY SOI.ProdName
这是我的表格
vwTradeDrug 视图:
CREATE VIEW [dbo].[vwTradeDrug]
AS
SELECT
T.TradeDrugId
, T.GenericDrugId
, T.TradeName
, G.GenericProprietaryName
, G.DosageType
, G.Strength
, T.TradeName + ',' + G.GenericProprietaryName + ',' + G.DosageType
+ ',' + G.Strength AS TradeFullName
FROM dbo.TradeDrug AS T
INNER JOIN Inventory.GenericDrug AS G
ON T.GenericDrugId = G.GenericId
GO
【问题讨论】:
-
你的问题到底是什么?预期的输出是多少?
-
已售出数量未显示,显示为 0,但我的产品有库存CloseInventory
-
AND coalesce(SOI.SoldOut,0) <> 1NULL 在布尔比较中总是评估为 NULL,除非您使用特定的 is null 评估;所以这不是真的,也不是假的。它是 Null,这意味着它既不是 = 1 也不是 1,因此所有记录都从左连接中排除,除了您要排除的记录 (10) :P 或and ISNULL(SOI.SoldOut,0)保持一致。
标签: sql sql-server sql-server-2008 sql-server-2008-r2 left-join