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