栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > 其他 > xml语言

利用XML FOR PATH合并分组信息的示例代码(图文)

xml语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

利用XML FOR PATH合并分组信息的示例代码(图文)

最近做统计功能的时候经常需要用到合并分组内容,如果只根据分组统计数值用聚合函数就可以了,如果处理分组后的字符串列呢,我们就必须要自己写函数处理了,比如有这样的数据信息:

现在要对上面数据进行分组,获取统计结果:
实现方式一:

-- ================================================-- Description:合并分组内容-- Author:夏保华-- Date:2009-08-06-- ================================================create   table   Employees(DepartmentName varchar(50),EmpoyeeName  varchar(20))   insert into Employees   select '开发部','小刘' union allselect '开发部','小王' union allselect '开发部','小张' union allselect '工程部','老吴' union allselect '工程部','老李' union allselect '市场部','大兵' union allselect '市场部','大黄' union allselect '市场部','大虾' union allselect '市场部','大国'go create function  Sum_ByGroup(@DepartmentName varchar(50))   returns varchar(8000)   as   begin       declare @ret varchar(8000)       set   @ret  =  ''       select  @ret  =  @ret+','+EmpoyeeName from Employees where DepartmentName = @DepartmentName       set   @ret   =   stuff(@ret,1,1,'')       return   @ret     end   goselect DepartmentName,dbo.Sum_ByGroup(DepartmentName) as EmployeesList from Employeesgroup by DepartmentNamego

实现方式二:利用 T-SQL 技术生成 XML 的方法

select DepartmentName,stuff((select ','+EmpoyeeName from Employees where DepartmentName = e.DepartmentName for xml path('')),1,1,'') as EmployeesList from Employees Egroup by DepartmentName

呵呵,这样就是不是简单多了,不用再写一个函数去处理这么麻烦了。 扩展:For XML Path
1.在该 XML 中,生成的行集中的每个列值都包在元素中。由于 SELECt 子句未指定任何列名别名,因此生成的子元素名称与 SELECT 子句中相应的列名相同。如果未对path指定任何信息,针对行集中的每一行,将添加一个 标记。

SQL语句:

select DepartmentName,(select ''+EmpoyeeName from Employees where DepartmentName = e.DepartmentName for xml path) as EmployeesList from Employees Egroup by DepartmentName


如:
2.您可以选择指定行元素名称,以覆盖默认的 。例如,以下查询将针对行集中的每一行返回相应的 元素。

SQL语句:

select DepartmentName,(select ''+EmpoyeeName from Employees where DepartmentName = e.DepartmentName for xml path('Employee')) as EmployeesList from Employees Egroup by DepartmentName


结果:

3.如果指定零长度字符串,则将不生成包装元素。
结果:

4.可以通过在 FOR XML 中指定 root 选项来添加单个顶级元素
SQL语句:

select DepartmentName,(select ''+EmpoyeeName from Employees where DepartmentName = e.DepartmentName for xml path('Employee'),root('Root')) as EmployeesList from Employees Egroup by DepartmentName

结果:

以上就是利用XML FOR PATH合并分组信息的示例代码(图文)的详细内容,更多请关注考高分网其它相关文章!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/794531.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号