SQL одинаковому блоку между двумя таблицами нужны порядковые номера в 1 ячейке - PullRequest
4 голосов
/ 11 апреля 2011

У меня есть 2 таблицы:

SELECT UnitId FROM dbo.tblUnits

SELECT UnitId, WorkOrderNumber FROM dbo.tblWorkOrders

Мне нужно отобразить все UnitId из dbo.tblUnits, затем в 1 столбце отобразить все 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

Есть идеи?

Спасибо

Ответы [ 3 ]

4 голосов
/ 11 апреля 2011
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
1 голос
/ 11 апреля 2011

Попробуйте это:

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
0 голосов
/ 28 июля 2011

Нашел эту прекрасную статью на эту тему. Он показывает вам другой способ сделать это.

* ** 1003 тысячи два *http://www.simple -talk.com / SQL / T-SQL-программирование / конкатенация-строка-значения-в-Transact-SQL /
...