关于SQLServer2005的学习笔记——自定义分组的实现
2010-03-12 16:33
591 查看
对于自定义分组,一向是比较烦琐的,幸好
SQLServer2005
提供了
FOR XML
PATH
的语法能够很方便的解决该问题,同时采用自定义函数的方式还能
够更方便的进行扩展;
Oracle10g
以后提供了一个
wmsys.wm_concat
函数,也可以起到类似的作用。
下面以
SQLServer2005
自带的
AdventureWorks
数据库
中的
2
个表为例
HumanResources.Department
--
部门信息表
HumanResources.EmployeeDepartmentHistory
--
部门员工对照表
--
使用自定义函数的方式
--
使用
SQLServer2005
的
FOR XML PATH
方式
--
在
Oracle10g
中采用
wmsys.wm_concat
方式
SQLServer2005
提供了
FOR XML
PATH
的语法能够很方便的解决该问题,同时采用自定义函数的方式还能
够更方便的进行扩展;
Oracle10g
以后提供了一个
wmsys.wm_concat
函数,也可以起到类似的作用。
下面以
SQLServer2005
自带的
AdventureWorks
数据库
中的
2
个表为例
HumanResources.Department
--
部门信息表
HumanResources.EmployeeDepartmentHistory
--
部门员工对照表
--
使用自定义函数的方式
SELECT groupname,dbo.fn_concatemployees(departmentid) employeesconcat FROM HumanResources.Department CREATE FUNCTION fn_concatemployees(@departmentid INT) RETURNS VARCHAR(1000) AS BEGIN DECLARE @employeeidcancat AS VARCHAR(1000); SET @employeeidcancat=''; SELECT @employeeidcancat=@employeeidcancat+CAST(employeeid AS VARCHAR(10))+';' FROM HumanResources.EmployeeDepartmentHistory WHERE departmentid=@departmentid; RETURN @employeeidcancat; END |
使用
SQLServer2005
的
FOR XML PATH
方式
SELECT groupname, (SELECT CAST(o.employeeid AS VARCHAR(10))+';' AS [text()] FROM HumanResources.EmployeeDepartmentHistory o WHERE o.departmentid=c.departmentid ORDER BY employeeid FOR XML PATH('')) AS employeesconcat FROM HumanResources.Department c |
在
Oracle10g
中采用
wmsys.wm_concat
方式
SELECT groupname,wmsys.wm_concat(employeeid) employeesconcat FROM EmployeeDepartmentHistory GROUP BY groupname; |
相关文章推荐
- 关于SQLServer2005的学习笔记——自定义分组的实现
- 关于SQLServer2005的学习笔记——自定义分组的实现
- 关于SQLServer2005的学习笔记——统计学自动分组问题
- 关于SQLServer2005的学习笔记——统计学自动分组问题
- 关于SQLServer2005的学习笔记——统计学自动分组问题
- 关于SQLServer2005的学习笔记——XML的处理
- android 开发零起步学习笔记(十七):自定义android用户控件,使用回调函数实现自定义事件
- MonoRail学习笔记五:定制服务实现自定义功能
- Spring学习笔记 关于spring 2.x中dependency-check标签与Spring3中的实现方式
- [转]WPF and Silverlight 学习笔记(二十五):使用CollectionView实现对绑定数据的排序、筛选、分组
- torch学习笔记3.2:实现自定义模块(cpu)
- 关于SQLServer2005的学习笔记——生日问题
- Android Animation学习笔记 Posted on 2010-01-11 23:00 feisky 阅读(40227) 评论(12) 编辑 收藏 关于动画的实现,Android提供了A
- R语言学习笔记 - 2 split、lapply和do.calld实现分组求平均
- STL源码学习笔记(1):stack及自定义实现
- java学习笔记—自定义实现linkedList集合
- 安卓学习笔记之AlertDialogUtils实现快速创建自定义AlertDialog
- 自定义属性之图片切换实例——初始化、实现切换效果——JS学习笔记2015-5-29(第42天)
- 关于SQLServer2005的学习笔记——XML的处理
- c++学习笔记(7)——关于类的实现(以vector为例)