SQL点滴积累5--For xml Path

之前项目接触过这个结构,当时用完没有总结,现在又接触到这个结构,只想在这儿总结一下,免得再用到的时候去网上乱找。 For xml Path结构返回xml格式的查询结果。

如:tb表中数据如下 select  * from tb

1)简单使用

当使用for  xml path时 select *  from tb  for  xml path

2)指定结点名称

可以为返回的xml结点指定名称 ,如 SELECT  name as '姓名',Subject AS '科目' FROM dbo.tb FOR XML PATH('考试信息')返回结果如下

 

3)指定返回结果结构

如 SELECT  DISTINCT(NAME)+'\' FROM dbo.tb FOR XML PATH('') 返回结果为test_0806\李四\王五\张三\

举例说明

看到网上一个例子,讲的是行列转换,其中就用到了该结构

如 仍引用tb表,要统计每个学生都参与了哪些科目的考试(成绩不为零),并以以下方式展示

 

查询语句为 SELECT NAME ,STUFF(subjects,1,1,'') as subjs   FROM (
SELECT Name ,
(SELECT '/'+Subject  FROM dbo.tb
 WHERE Name=a.NAME AND Result<>0
 FOR XML PATH('')
 )AS subjects
 FROM dbo.tb AS a
 GROUP BY NAME
)AS b

 

posted @ 2013-08-16 14:51  mifeng2012  阅读(79)  评论(0)    收藏  举报