我有一个Microsoft SQL Server 2008查询,该查询使用左外部联接从三个表返回数据。很多时候,第二个和第三个表中没有数据,因此我得到一个空值,我认为这是左外部联接的默认值。有没有办法替换select语句中的默认值?我有一个解决方法,可以选择一个表变量,但感觉有点脏。

SELECT iar.Description, iai.Quantity, iai.Quantity * rpl.RegularPrice as 'Retail',
iar.Compliance FROM InventoryAdjustmentReason iar
LEFT OUTER JOIN InventoryAdjustmentItem iai  on (iar.Id = iai.InventoryAdjustmentReasonId)
LEFT OUTER JOIN Item i on (i.Id = iai.ItemId)
LEFT OUTER JOIN ReportPriceLookup rpl on (rpl.SkuNumber = i.SkuNo)
WHERE iar.StoreUse = 'yes'

如果可能的话,我希望数量和常规价格默认为零。

最佳答案

那就像

IsNull(FieldName, 0)

或更完整地说:
SELECT iar.Description,
  ISNULL(iai.Quantity,0) as Quantity,
  ISNULL(iai.Quantity * rpl.RegularPrice,0) as 'Retail',
  iar.Compliance
FROM InventoryAdjustmentReason iar
LEFT OUTER JOIN InventoryAdjustmentItem iai  on (iar.Id = iai.InventoryAdjustmentReasonId)
LEFT OUTER JOIN Item i on (i.Id = iai.ItemId)
LEFT OUTER JOIN ReportPriceLookup rpl on (rpl.SkuNumber = i.SkuNo)
WHERE iar.StoreUse = 'yes'

关于mysql - 替换从左外部联接返回的默认空值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1664266/

10-10 03:32