分组记录并将结果放入单个字段

时间:2009-06-30 15:35:07

标签: sql-server-2005 tsql

我有以下记录集:

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进行分组并获得结果集:

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)?

2 个答案:

答案 0 :(得分:1)

我建议保留添加&lt; br /&gt;的逻辑。服务器端代码中的元素,而不是SQL查询。让你的SQL专注于返回结果集并在代码中使用循环来弄清楚如何呈现它。

第一次尝试可能涉及基于查询的循环,其中包含另一个基于查询的循环,但这会导致对数据库的查询进行轰炸。最好使用单个大型查询结果,并为条件输出提供逻辑分支。修改您的查询促进所需的输出,而不是创建它。例如,您可以订购数据,这样您就知道在转入下一个ID之前,您将获得一个ID的所有资产。

答案 1 :(得分: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