給定一個對多個倉庫中的項目可以進行一對多的操作,直接連接會返回重複的項目。我想將倉庫表中的數據摺疊爲字符串,以便每個項目有一個記錄。這有效,但有沒有更有效的方法,避免做2個獨立的子查詢/子查詢?SQL Server將多個列摺疊爲一個字符串,從一個到多個關係
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,
您是否期待兩組列表中的條目順序相關,例如:倉庫30有第2項的數量8? – HABO
是的,那很理想。可能需要在來自stackStatus Summary的查詢中顯式排序。 – RyanW
這個問題的重複? http://stackoverflow.com/questions/5452681/sql-aggregating-strings-together – tgolisch