4

私は2つのテーブルを持っています:

SELECT UnitId FROM dbo.tblUnits

SELECT UnitId, WorkOrderNumber FROM dbo.tblWorkOrders

dbo.tblUnitsのすべてのUnitIdを表示してから、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

何か案は?

ありがとう

4

3 に答える 3

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
于 2011-04-11T16:46:57.347 に答える
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
于 2011-04-11T16:45:49.157 に答える
0

このトピックに関するこの素晴らしい記事を見つけました。これを行うためのさまざまな方法を示しています。

http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/

于 2011-07-28T16:38:13.167 に答える