将多笔相同键值的字段内容合并


      常常遇到这样的问题,如何将相同键值的蓝位内容值串接 ?
举例来说 TableA 如下:

ID  Type   DESC
1    cpu     处理器
1    cpu     双核心
1    cpu     800外频  
2    HD      硬盘
2    HD      500G
2    HD      5400转

希望将字段内容串接并以【,】分隔,在 SQL Server 2005 可以利用 XML PATH 来将功能实作,如:

ID  Type   DESC
1    cpu     处理器,双核心,800外频
2    HD      硬盘,500G,5400转

SELECT T1.id, T1.type,(  STUFF( (           SELECT ',' + [DESC]           FROM   @TABLEA T2           WHERE  T2.id = T1.id           FOR XML PATH('')          ), 1, 1, ''       )) AS [DESC]FROM @TABLEA T1GROUP BY id, type


如果只是想单纯地将字段内容单纯串接,则可以用下列做法:

ID  Type   DESC
1    cpu     处理器双核心800外频
2    HD      硬盘500G5400转

SELECT T1.id, T1.type,(  SELECT [DESC] + ''  FROM   @TABLEA T2  WHERE  T2.id = T1.id  FOR XML PATH('')) AS [DESC]FROM @TABLEA T1GROUP BY id, type


如果是 SQL Server 2000 则请参考 Concatenate the &#118alues in a column in SQL Server 2000 and 2005 文章

关于 PATH 与 STUFF 用法则参考:

Using PATH Mode
STUFF (Transact-SQL)


DotBlogs Tags: chhuang SQLServer

 


  相关链接:
        北京网站建设    网站制作    网站制作套餐    网站维护    网站改版    网站推广    搜索引擎优化
        SEO建站    企业邮箱        虚拟主机    域名购买