アイテムが多数の倉庫に存在する可能性がある 1 対多の場合、直接結合を行うと、重複したアイテムが返されます。アイテムごとに 1 つのレコードが存在するように、倉庫テーブルのデータを文字列にまとめたいと思います。これは機能しますが、2 つの別個のサブセレクト/サブクエリを実行することを回避する、より効率的なアプローチはありますか?
SELECT
im.ItemID,
(SELECT WareHouseID + ','
FROM stockStatusSummary WHERE ItemKey = im.ItemKey for xml path (''))
as 'WarehouseIDs',
(SELECT Convert(varchar(20), Round(QtyAvailable,3)) + ','
FROM stockStatusSummary
WHERE ItemKey = im.ItemKey for xml path (''))
as 'WarehouseQuantity'
FROM item im
出力は次のようになります。
ItemID WarehouseIDs WarehouseQuantity
------- ------------- -----------------
1 10,20,30, 5,7,9,
2 20,30,40, 6,8,10,
3 30,40,50, 7,9,11,