2009-06-30 1 views
1

を結果を置く:私は、各IDのグループにしたいグループレコードと私は、次のレコードセット持っている単一のフィールドに

ID  AssetName 
882  Training Room VCR 
882  Training Room DVD 
882  Training Room TV 
858  Training Room VCR 
858  Training Room Computer 
858  Training Room TV 

をとのような結果セットを取得:

ID  Assets 
882  Training Room VCR<br/>Training Room DVD<br/>Training Room TV 
858  Training Room VCR<br/>Training Room Computer<br/>Training Room TV 

を構築する方法はありますこれを行うSQL 2005のステートメント?


重複質問

How to return multiple values in one column (T-SQL)?

答えて

1

私は、サーバー側のコードで< BR/>要素ではなく、SQLクエリを追加するためのロジックを保つことをお勧めします。結果セットを返すことにSQLを集中させ、コードにループを使用して、そのように提示する方法を理解してください。

最初の試行では、クエリーベースのループに別のクエリーベースのループが含まれている可能性がありますが、その結果、データベースに対するクエリーのボンバードが発生します。単一の大きなクエリ結果を使用し、条件付き出力のロジックブランチを持つ方が良いです。クエリをに変更して、の出力を容易にし、作成しないようにします。たとえば、あるIDのすべてのアセットを取得してから次のIDに移る前に、データを並べ替えることができます。

1

これで必要な情報が得られます。

SELECT DISTINCT 
    [ID] 
    ,CONVERT(VARCHAR(MAX), 
    ( SELECT [AssetName] [div] 
     FROM [dbo].[tableName] t1 
     WHERE t1.[ID] = t.[ID] FOR XML PATH('') 
    )) [asset] 
FROM [dbo].[tableName] t 
+0

これは、この形式でレコードを提供します:

Smart Board
In conference room 434
VCR/DVD player in conference room 434

+0

を次にこの は、REPLACE、DISTINCT [ID] を選択してみてください(CONVERT(VARCHAR(MAX)、 は([ASSETNAME] + 'を選択[XXX]、[
])[asset] FROM [dbo]。[tableName] t1 WHERE t1。[ID] = t。XML PATH( '') ) dbo]。[tableName] t – Slim