SQL-единицам между двумя таблицами нужны номера заказов в 1 ячейке
У меня есть 2 таблицы:
SELECT UnitId FROM dbo.tblUnits
SELECT UnitId, WorkOrderNumber FROM dbo.tblWorkOrders
Мне нужно отобразить все UnitId из dbo.tblUnits, затем в 1 столбце diplay все WorkOrders, разделенные запятой.
Итак, вот несколько примеров данных:
dbo.tblUnits:
UnitId
123
156
178
dbo.tblWorkOrders
UnitId WorkOrderNumber
123 1
123 2
156 4
178 5
178 9
178 10
Мне нужно использовать таблицу tblUnits, потому что я извлекаю из нее больше данных, но в конечном итоге хочу это показать:
UnitId WorkOrderNumber
123 1,2
156 4
178 5,9,10
Любые идеи?
Спасибо
Ответы
Ответ 1
select
UnitId,
stuff((select ', ' + convert(varchar, WorkOrderNumber)
from tblWorkOrders t2 where t1.UnitId = t2.UnitId
for xml path('')),
1,2,'') WorkOrderNumbers
from tblWorkOrders t1
group by UnitId
Ответ 2
Попробуйте следующее:
SELECT
t1.UnitId,
substring((SELECT ( ', ' + WorkOrderNumber)
FROM tblWorkOrders t2
WHERE t1.UnitId= t2.UnitId
ORDER BY
UnitId
FOR XML PATH( '' )
), 3, 1000 ) as WorkOrderNumbers
FROM tblWorkOrders as t1
Ответ 3
Нашел эту приятную статью по этой теме. Это показывает вам другой способ сделать это.
http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/