0

以下に、SQL Server 2008 を使用して SAP DB でオンライン販売可能なアイテムを表示するために、スーパーマーケット データベースで使用するクエリを示します。

SELECT T0.[CodeBars], T0.[ItemName], T3.[Price], T1.[Price], T2.[ItmsGrpNam]
FROM OITM T0 INNER JOIN ITM1 T1 ON T0.ItemCode = T1.ItemCode 
INNER JOIN OITB T2 ON T0.ItmsGrpCod = T2.ItmsGrpCod 
INNER JOIN ITM1 T3 ON T0.ItemCode = T3.ItemCode 
WHERE T0.[U_Online] = 'Y' AND T1.[PriceList] = '3' AND T3.[Pricelist]='1'

クエリは正常に機能しますが、OnHand アイテム用に別の列を追加したいと考えています。つまり、特定の倉庫 '6' に在庫があるアイテムで、オンライン販売用のすべてのアイテムがここから来ます。スーパーマーケットには8つの倉庫があります。はT0.[U_Online] = 'Y'、倉庫に関係なくオンラインで販売された商品を示しています。

T0.[CodeBars]以下のクエリを変更して、返されるたびに、倉庫 6 の手持商品の追加の列を取得するにはどうすればよいですか? テーブル OITW に追加の結合があります。

SELECT T0.[CodeBars], T0.[ItemName], T3.[Price], T1.[Price], T2.[ItmsGrpNam],
T4.OnHand
FROM OITM T0 INNER JOIN ITM1 T1 ON T0.ItemCode = T1.ItemCode 
INNER JOIN OITB T2 ON T0.ItmsGrpCod = T2.ItmsGrpCod 
INNER JOIN ITM1 T3 ON T0.ItemCode = T3.ItemCode 
INNER JOIN OITW T4 ON T0.ItemCode = T4.ItemCode
WHERE T0.[U_Online] = 'Y' AND T1.[PriceList] = '3' AND T3.[Pricelist]='1'
--AND T4.WhsCode = '6'

最初のクエリのサンプル結果

4

1 に答える 1

1

LEFT JOIN次のように、代わりに必要になると思います。

SELECT 
  T0.[CodeBars], 
  T0.[ItemName], 
  COALESCE(T3.[Price], T1.[Price]) AS Price, 
  T2.[ItmsGrpNam],
  T4.OnHand
FROM       OITM T0 
LEFT JOIN ITM1 T1 ON T0.ItemCode   = T1.ItemCode   AND T1.[PriceList] = '3'
LEFT JOIN OITB T2 ON T0.ItmsGrpCod = T2.ItmsGrpCod 
LEFT JOIN ITM1 T3 ON T0.ItemCode   = T3.ItemCode   AND T3.[Pricelist] = '1'
LEFT JOIN OITW T4 ON T0.ItemCode   = T4.ItemCode   AND T4.WhsCode = '6'
WHERE T0.[U_Online] = 'Y' 
于 2013-02-05T08:11:32.867 に答える