2011-04-11 39 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