sql把多行数据合并成一行For xml path

有一张表,结构如上。

现在我想把他变成

张三  c#,JAVA,SQL

李四 php,Orcal

那么需要进行如下操作

首先要把Ability字段想法弄 成一行,并且在一个单元格展示出来

select Ability+',' from dbo.AbilityS for xml path('')--这一句可以把Ability字段横过来

但是展示的是全部的那么需要怎么办呢?

可以把上边的查询当成单查一个字段的条件。然后执行下边的语句。查的是姓名和技能字段条件是名字等于名字的就展示拼接

select Name,(select Ability+',' from dbo.AbilityS where Name=a.Name for xml path(''))as haha from dbo.AbilityS as a

for xml path的作用。是把数据以xml格式展示出来。

select * from dbo.AbilityS for xml path('row') --对表执行查询会有如下的结构出现,可以通过给字段或表起别名(as)来改变节点的名称

path里的row是外层节点,可以省略

我们select的时候光查一个字段的话,他就会显示出一个字段。但是带着标签的。这个时候后边拼接上你要的符号就行了

假如你就想要查一个字段把他横过来,那么他的名字是乱的那么需要这样:

select (select Name+',' from dbo.AbilityS for xml path(''))as haha

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值