关于SQL Server将一列的多行内容拼接成一行的问题讨论 2000 只能自己写函数

来源:互联网 发布:苏州网站排名优化软件 编辑:程序博客网 时间:2024/05/21 11:33

昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行


比如表中有两列数据 :

ep_classes  ep_name

AAA         企业1

AAA         企业2

AAA         企业3

BBB         企业4

BBB         企业5


我想把这个表变成如下格式:

ep_classes      ep_name

AAA             企业1,企业2,企业3

BBB             企业4,企业5


    一开始挺头疼的(会了的肯定没有这种感觉,不会那必须是头疼啊(*^__^*) ),从网上找了点资料,算是找到一种比较简单方便的方法吧,现在大体总结一下,供大家共同学习。


    原先的表名为:ep_detail。

    实现代码如下:

   

[sql] view plaincopy
  1. select ep_classes, ep_name = (stuff((select ',' + ep_name from ep_detail where ep_classes =   
  2.     a.ep_classes for xml path('')),1,1,'')) from ep_detail a group by ep_classes  
  3. 这里使用了SQL Server 2005版本以后加入的stuff以及for xml path,先说下在上面这句sql中的作用,然后再详细的说明一下这两个的用法。
  4. [sql] view plaincopy
    1. for xml path(''
    这句是把得到的内容以XML的形式显示。

    [sql] view plaincopy
    1. stuff((select ',' + ep_name from ep_detail where ep_classes = a.ep_classes for xml path('')),1,1,''
    注意:仅供自娱自乐
0 0
原创粉丝点击