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

来源:互联网 发布:淘宝售后处理投诉 编辑:程序博客网 时间:2024/06/17 16:28

有一张表,结构如上。

现在我想把他变成

张三  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

1 1
原创粉丝点击