灵活运用,实现多行合并到一行

docs.microsoft.com 链接:  [SQL 

FOOdyssey XML PATH
有的人恐怕清楚有个外人或者不清楚,其实它就是将查询结果集以XML方式表现,有了它我们得以简化大家的查询语句达成部分在先可能需求借助函数活存款和储蓄进程来完结的办事。那么以一个实例为主.

](
XML PATH应用**

一.FOOdyssey XML PATH 简单介绍

 

那正是说依然第三来介绍一下FOXC90 XML PATH
,若是未来有一张兴趣爱好表(hobby)用来存放在兴趣爱好,表结构如下:图片 1

率先呢!大家在追加一张学生表,列分别为(stuID,sName,hobby),stuID代表学生编号,sName代表学生姓名,hobby列存学生的喜爱!那么未来表结构如下:

接下去大家来看使用FO悍马H2 XML PATH的询问结果语句如下:

 

SELECT*FROM@hobbyFOR XML
PATH

           图片 2

结果:

 

图片 3

       
那时,大家的要求是询问学生表,呈现全部学员的兴奋的结果集,代码如下:

<row>
<hobbyID>1</hobbyID>
<hName>爬山</hName>
</row>
<row>
<hobbyID>2</hobbyID>
<hName>游泳</hName>
</row>
<row>
<hobbyID>3</hobbyID>
<hName>美食</hName>
</row>

 

图片 4

SELECT B.sName,LEFT(StuList,LEN(StuList)-1) as hobby FROM (
SELECT sName,
(SELECT hobby+',' FROM student 
  WHERE sName=A.sName 
  FOR XML PATH('')) AS StuList
FROM student A 
GROUP BY sName
) B 

由此可见FO卡宴 XML PATH 能够将查询结果根据行输出成XML各式!

       
 结果如下:图片 5

那正是说,怎么样转移XML行节点的名号呢?代码如下:

 

SELECT*FROM@hobbyFOR XML
PATH(‘MyHobby’)

SELECT B.sName,LEFT(StuList,LEN(StuList)-一) as hobby  就是来去掉逗号

 

 

结果自然也由此可见了呢?没有错原来的行节点<row>
变成了我们在PATH前边括号()中,自定义的称谓<MyHobby>,结果如下:

图片 6

<MyHobby>
<hobbyID>1</hobbyID>
<hName>爬山</hName>
</MyHobby>
<MyHobby>
<hobbyID>2</hobbyID>
<hName>游泳</hName>
</MyHobby>
<MyHobby>
<hobbyID>3</hobbyID>
<hName>美食</hName>
</MyHobby>

图片 7

本条时候细心的情侣肯定又会问那么列节点如何改变呢?还记的给列起小名的主要字AS吗?对了便是用它!代码如下:

SELECT hobbyID as’MyCode’,hName
as’MyName’FROM@hobbyFOR XML
PATH(‘MyHobby’)

 

那么那一年大家列的节点名称也会编制程序我们自定义的名称
<MyCode>与<MyName>结果如下:

图片 8

<MyHobby>
<MyCode>1</MyCode>
<MyName>爬山</MyName>
</MyHobby>
<MyHobby>
<MyCode>2</MyCode>
<MyName>游泳</MyName>
</MyHobby>
<MyHobby>
<MyCode>3</MyCode>
<MyName>美食</MyName>
</MyHobby>

图片 9

啊!
既然行的节点与列的节点大家都得以自定义,我们是不是足以构建我们欣赏的输出格局吧?仍旧看代码:

网站地图xml地图