给定一个项目可以在多个仓库中的一对多,执行直接连接会返回重复的项目。我想将仓库表中的数据折叠成字符串,以便每个项目有一条记录。这可行,但是是否有更有效的方法可以避免执行 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,