0

アイテムが多数の倉庫に存在する可能性がある 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,
4

1 に答える 1