SQL SERVER 合并重复行,行列转换(sql server2000 里面如何实现oracle10g的 wmsys.wm_concat() 的功能?)
来源:互联网 发布:android 7.0源码分析 编辑:程序博客网 时间:2024/05/22 03:45
sql server2000 里面如何实现oracle10g的 wmsys.wm_concat() 的功能?以及学习以下关键字:一、行列转换关键字PIVOT与UNPIVOT的使用二、OUTER APPLY
----乌龟代码---合并列值--*******************************************************************************************表结构,数据如下:id value----- ------ 1 aa1 bb2 aaa2 bbb2 ccc需要得到结果:id values ------ ----------- 1 aa,bb2 aaa,bbb,ccc即:group by id, 求 value 的和(字符串相加)1. 旧的解决方法(在sql server 2000中只能用函数解决。)--=============================================================================create table tb(id int, value varchar(10))insert into tb values(1, 'aa')insert into tb values(1, 'bb')insert into tb values(2, 'aaa')insert into tb values(2, 'bbb')insert into tb values(2, 'ccc')go --1. 创建处理函数 CREATE FUNCTION dbo.f_strUnite(@id int)RETURNS varchar(8000)AS BEGIN DECLARE @str varchar(8000) SET @str = '' SELECT @str = @str + ',' + value FROM tb WHERE id=@id RETURN STUFF(@str, 1, 1, '')END GO -- 调用函数 SELECt id, value = dbo.f_strUnite(id) FROM tb GROUP BY iddrop table tbdrop function dbo.f_strUnitego--===================================================================================2. 新的解决方法(在sql server 2005中用OUTER APPLY等解决。)create table tb(id int, value varchar(10))insert into tb values(1, 'aa')insert into tb values(1, 'bb')insert into tb values(2, 'aaa')insert into tb values(2, 'bbb')insert into tb values(2, 'ccc')go -- 查询处理 SELECT * FROM(SELECT DISTINCT id FROM tb)A OUTER APPLY( SELECT [values]= STUFF(REPLACE(REPLACE( ( SELECT value FROM tb N WHERE id = A.id FOR XML AUTO ), ' <N value="', ','), '"/>', ''), 1, 1, ''))Ndrop table tb--SQL2005中的方法2 create table tb(id int, value varchar(10))insert into tb values(1, 'aa')insert into tb values(1, 'bb')insert into tb values(2, 'aaa')insert into tb values(2, 'bbb')insert into tb values(2, 'ccc')go select id, [values]=stuff((select ','+[value] from tb t where id=tb.id for xml path('')), 1, 1, '')from tbgroup by iddrop table tb
参考资料:http://www.cnblogs.com/love-summer/archive/2012/03/27/2419778.html
- SQL SERVER 合并重复行,行列转换(sql server2000 里面如何实现oracle10g的 wmsys.wm_concat() 的功能?)
- SqlServer实现oracle10g的 wmsys.wm_concat()
- SQL SERVER 合并重复行,行列转换
- SQL SERVER 合并重复行,行列转换
- WMSYS.WM_CONCAT() 行列转换
- 使用WMSYS.WM_CONCAT函数实现行列转换
- 使用WMSYS.WM_CONCAT函数实现行列转换
- 使用WMSYS.WM_CONCAT函数实现行列转换
- sql server 行列的转换
- oracle,在一条sql语句里面的wmsys.wm_concat()、row_number()、union all 的用法
- WMSYS.WM_CONCAT的用法 行列转置
- Oracle List 功能 《=》 Oracle: wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
- SqlServer实现oracle10g的 wmsys.wm_concat()/使用自连接、for xml path('')和stuff合并显示多行数据到一行中
- wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
- wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
- wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
- wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
- Oracle: wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
- Hello World
- android 对话框大全
- C++多文件项目编译
- ssh 事务不能回滚 Could not roll back Hibernate transaction; nested exception is org.hibernate.Transaction
- python:_, __ 和__xx__辨异
- SQL SERVER 合并重复行,行列转换(sql server2000 里面如何实现oracle10g的 wmsys.wm_concat() 的功能?)
- dropdownlist绑定的二种方法
- HDU1391:Number Steps
- jquery validate(4) : 写自定义验证
- 命令行下Android AVD命令解析
- 插值方法-效率高的插值方法-opencv(二)
- 强大无比的android智能开发平台--imx6Q+android4.x
- C语言下取得系统开机运行时间
- hdu 2121 Ice_cream’s world II