有一张表,结构如上。
现在我想把他变成
张三 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