Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 将记录分组并将结果放入单个字段_Sql Server 2005_Tsql - Fatal编程技术网

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

Sql server 2005 将记录分组并将结果放入单个字段,sql-server-2005,tsql,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

我有以下记录集:

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   
ID资产
882培训室VCR
培训室DVD
培训室电视 858培训室录像机
培训室计算机
培训室电视
有没有一种方法可以构建一个SQL 2005语句来实现这一点


重复问题


我建议保留在服务器端代码中添加
元素的逻辑,而不是SQL查询。让SQL专注于返回结果集,并在代码中使用循环来确定如何这样表示结果集


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

这将获得您所需要的

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

这将以这种格式提供记录:434会议室的智能板434会议室的VCR/DVD播放机434然后尝试此选择不同的[ID],替换(从[dbo]中选择[AssetName]+“XXX”。[tableName]t1其中t1.[ID]=t.[ID]表示XML路径(“”)),[dbo]中的[XXX',“
”)[asset]。[表名]t