我有以下记录集:
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语句?
重复的问题
答案 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