1. ホーム
  2. mysql

[解決済み] 左外部結合から返されるデフォルトの Null 値の置き換え

2022-11-13 23:52:03

質問

Microsoft SQL Server 2008 のクエリで、左外部結合を使用して 3 つのテーブルからデータを返すものがあります。 多くの場合、2 番目と 3 番目のテーブルにはデータがないため、左外部結合のデフォルトと思われる null が返されます。 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'

できればQuantityとRegularPriceはデフォルトで0にしたいです。

どのように解決するのですか?

それは、次のように簡単です。

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'