Учитывая, что один из многих, где Элемент может быть во многих Складках, делает прямое объединение, возвращает повторяющиеся элементы. Я хотел бы свернуть данные из таблицы хранилища в строки так, чтобы была одна запись за элемент. Это работает, но существует ли более эффективный подход, который позволяет избежать двух отдельных подзапросов/подзапросов?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 имеет количество 8 пункта 2? – HABO
Да, это идеально. Вероятно, требуется явное упорядочение запроса из stackStatus Summary. – RyanW
Дубликат этого вопроса? http://stackoverflow.com/questions/5452681/sql-aggregating-strings-together – tgolisch