我正在使用复杂的查询。即使没有发现任何东西,我也必须始终返回我的行。
SELECT
a.InventoryItemID,
a.Name,
a.RetailPrice,
b.MainGroupItemCode,
b.MainGroupItemID,
c.VatValue,
a.Code,
a.Weight,
b.MainGroupItemName,
a.RetailPrice2,
a.FreePrice,
case when isnull(e.IsActive,0)=1 and isnull(d.price,0)!=0 then d.Price else RetailPrice End as CustomPrice
from InventoryMaster a
join InventoryMainGroupItems b on a.MainGroupItemID=b.MainGroupItemID
join VatCodes c on b.VatCodeID=c.VatCodeID
join InventoryPrices d on d.InventoryItemID=a.InventoryItemID
join InventoryCatalog e on e.CatalogID=d.CatalogID
where a.InventoryItemID=2 and ISNULL(e.catalogID,1)=3
问题出在最后一行ISNULL(e.catalogID,1)= 3。在我的表格中,它不存在编号为3的CatalogID。 因此它不会返回任何内容,但是存在编号为1的CatalogID。我已将if为null设置为返回给我1,但是不幸的是,我没有从查询中返回任何行。我该如何解决?
我的问题已经解决,我只想添加一个带有白色条件的连接表
SELECT *
from
(
SELECT t1.ID,
t1.Name,
COALESCE(t2.price,t1.Price) AS price ,
Row_number() OVER(partition BY t1.ID ORDER BY t1.ID) rn
FROM InventoryMaster t1
LEFT JOIN inventoryprices t2
ON t1.ID=t2.ID
LEFT join InventoryCatalog t3
ON t3.ID=t2.ID and t3.ID=2
where t1.ID=2
) t
WHERE t.rn=1
它总是向我返回第一张表库存中的零售价
答案 0 :(得分:0)
在选择开始位置附近添加3个列
d.InventoryItemID,
d.CatalogID,
e.CatalogID
然后从“位置”中删除“ And ISNULL”,然后运行以查看得到的内容。
可能是
join InventoryCatalog e
needs
ON d.CatalogID=ISNULL(e.catalogID,1)