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

昨天遇到一个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 plain copy
  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 plain copy
    1. for xml path(''
    这句是把得到的内容以XML的形式显示。

    [sql]  view plain copy
    1. stuff((select ',' + ep_name from ep_detail where ep_classes = a.ep_classes for xml path('')),1,1,''
    注意:仅供自娱自乐
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值