Oracle、SqlServer中合并列
来源:互联网 发布:域名备案有什么好处 编辑:程序博客网 时间:2024/05/17 08:05
Oracle中合并一列的方法:WMSYS.WM_CONCAT
使用介绍:
TableA:列1 列2
1 a
1 b
2 b
2 c
查询:select 列1,WMSYS.WM_CONCAT(列2) AS 列2 from TableA
结果为:列1 列2
1 a,b
2 b,c
SqlServer中合并一列的方法:dbo.f_strUnite
表结构,数据如下: id value
1 aa
1 bb
2 aaa
2 bbb
2 ccc
需要得到结果: idvalues
1 aa,bb
2 aaa,bbb,ccc 即:groupby id, 求 value 的和(字符串相加)
1. 旧的解决方法(在sql server 2000中只能用函数解决。)
createtable tb(idint, valuevarchar(10))
insertinto tbvalues(1,'aa')
insertinto tbvalues(1,'bb')
insertinto tbvalues(2,'aaa')
insertinto tbvalues(2,'bbb')
insertinto tbvalues(2,'ccc')go
--1. 创建处理函数 CREATEFUNCTION dbo.f_strUnite(@idint)RETURNSvarchar(8000)ASBEGINDECLARE@strvarchar(8000)SET@str=''SELECT@str=@str+','+ valueFROM tbWHERE id=@idRETURNSTUFF(@str,1,1,'')ENDGO
-- 调用函数 SELECt id, value = dbo.f_strUnite(id) FROM tb GROUPBY iddroptable tbdropfunction dbo.f_strUnitego
/* id value ----------- ----------- 1 aa,bb 2 aaa,bbb,ccc (所影响的行数为 2 行) */
2. 新的解决方法(在sql server 2005中用OUTER APPLY等解决。)
createtable tb(idint, valuevarchar(10))
insertinto tbvalues(1,'aa')
insertinto tbvalues(1,'bb')
insertinto tbvalues(2,'aaa')
insertinto tbvalues(2,'bbb')
insertinto tbvalues(2,'ccc')go
-- 查询处理 SELECT*FROM(SELECTDISTINCT idFROM tb)AOUTER APPLY(SELECT[values]=STUFF(REPLACE(REPLACE( ( SELECT valueFROM tb NWHERE id= A.idFOR XML AUTO ), ' <N value="',','),'"/>',''),1,1,'') )Ndroptable tb/* id values ----------- ----------- 1 aa,bb 2 aaa,bbb,ccc (2 行受影响) */--SQL2005中的方法2createtable tb(idint, valuevarchar(10))insertinto tbvalues(1,'aa')insertinto tbvalues(1,'bb')insertinto tbvalues(2,'aaa')insertinto tbvalues(2,'bbb')insertinto tbvalues(2,'ccc')goselect id,[values]=stuff((select','+[value]from tb twhere id=tb.idfor xml path('')),1,1,'')from tbgroupby id/* id values ----------- -------------------- 1 aa,bb 2 aaa,bbb,ccc (2 row(s) affected)*/
转载地址:http://343766868.blog.163.com/blog/static/483140562011384122463/
- Oracle、SqlServer中合并列
- Oracle中合并列和行
- oracle 列合并
- oracle 列合并
- oracle列合并
- Oracle 列合并
- oracle和sqlserver sql结果中添加序号列
- SQLServer中实现Oracle多列条件in
- Oracle 中列添加和不同行数的两张表合并
- sqlserver合并“id值相同”的列
- Oracle 合并行,合并列
- oracle 列合并到行
- oracle 列合并函数编写
- Oracle-单表合并列
- oracle合并列函数wm_concat
- SqlServer中计算列详解
- oracle,sqlserver,mysql 栏位合并sql
- Oracle合并多行为多列
- 排序算法之二元选择排序
- smali文件语法参考
- 第十六周项目二 字符串的连接
- 第十六周 OJ:有相同数字?
- Java生成和解析XML格式文件和字符串的实例代码【dom4j中的SAXReader对象读取并解析xml文件】
- Oracle、SqlServer中合并列
- 中文下载方法
- 值得推荐的android开发框架简介
- MFC中修改CStdioFile文件中指定行
- 第十六周项目2--------2 删除字符串中的字符
- IOS http请求的get 和 post的请求的区别
- 我们的未来在哪里?
- 毫欧姆电阻在汽车电子系统中的应用
- [HDOJ]2017