2011-04-11 45 views
4

我有2个表:SQL相同单元需要顺序号在1个细胞

SELECT UnitId FROM dbo.tblUnits 

SELECT UnitId, WorkOrderNumber FROM dbo.tblWorkOrders 

我需要从dbo.tblUnits显示所有的UnitID的然后在1个diplay用逗号分隔的所有工作订单。

因此,这里是一些样本数据: 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 

任何想法?

感谢

+0

的可能重复的[连接多个行(http://stackoverflow.com/questions/3197626/concatenate-multiple-rows) – JeffO 2011-04-11 16:45:11

回答

4
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

试试这个:

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