我的查询没有给出正确的输出。
我尝试了不同的方式,例如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 :(得分:1)
我建议带来&#34; AND SOI.SoldOut&lt;&gt; 1&#34;在WHERE子句中没有加入术语
答案 1 :(得分:1)
问题在于SOI.SoldOut <> 1
首先,正如Pouya Kamyar指出的那样,将WHERE
条款包含在JOIN
条款中而不是NULL
中更为常规。
但问题是,此字段的值大多为WHERE SOI.SoldOut IS NULL
OR SOI.SoldOut <> 1
。
你想要的是更像这样的东西:
.no-scroll::-webkit-scrollbar {display:none;} /* Safari */
.no-scroll::-moz-scrollbars {display:none;}
.no-scroll::-o-scrollbar {display:none;} /* opera */
.no-scroll::-google-ms-scrollbar {display:none;}
.no-scroll::-khtml-scrollbar {display:none;}
答案 2 :(得分:0)
将售罄的空数据更改为0或1或...
处理空值,以便布尔比较产生真或假而不是“NULL”,如下所示。
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 ISNULL(SOI.SoldOut,0) <> 1 -- this should do the trick
LEFT OUTER JOIN dbo.vwTradeDrug AS VTD
ON SOI.TradeDrugId = VTD.TradeDrugId
ORDER BY SOI.ProdName
记住布尔比较Null值导致NULL(布尔比较中的第三个值!)所以SOI.SoldOut&lt;&gt; 1当SOI.SoldOut为null时,将导致NULL而不是您期望的true / false。