sql 合并结果集 保存到字符串
来源:互联网 发布:神仙劫各项进阶数据 编辑:程序博客网 时间:2024/06/05 09:32
sql server2000 里面如何实现oracle10g的 wmsys.wm_concat() 的功能?
以及学习以下关键字:
一、行列转换关键字PIVOT与UNPIVOT的使用
二、OUTER APPLY
三、FOR XML AUTO 、FOR XML PATH
----乌龟代码---
合并列值
--*******************************************************************************************
表结构,数据如下:
id value
----- ------
1 aa
1 bb
2 aaa
2 bbb
2 ccc
需要得到结果:
id values
------ -----------
1 aa,bb
2 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 id
drop table tb
drop function dbo.f_strUnite
go
--===================================================================================
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, '')
)N
drop 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 tb
group by id
假如select name from student 的结果有两个名字,现在我想将这两个名字连成一个字符串(最好中间有个逗号)
declare
@
name
varchar
(8000)
select
@
name
=
isnull
(@
name
+
','
,
''
)+
name
from
syscolumns
where
id=object_id(
'sysobjects'
)
select
@
name
/*
base_schema_ver,cache,category,crdate,deltrig,ftcatid,id,indexdel,info,instrig,
name
,parent_obj,refdate,replinfo,schema_ver,seltrig,stats_schema_ver,status,sysstat,type,uid,updtrig,userstat,version,xtype
*/
0 0
- sql 合并结果集 保存到字符串
- SQL合并结果集(Union)
- 将两个字符串相乘, 结果保存到字符串中
- sql查询将多个结果合并成一个字符串
- MS SQL 合并结果集并求和
- sql 字符串合并类似行转列(指定字段的行结果合并成字符串)
- 将MySQL中sql运行结果保存到文件
- 将MySQL中sql运行结果保存到文件
- SQL如何合并查询结果
- GridView结果保存到Execl
- 保存结果到指定位置
- pwd结果保存到变量
- Sql UNION 合并多个结果集并排序
- SQL 合并两个结果集 一个倒序,一个正序
- SQL 合并正序倒序结果集查询
- sql结果集限制与字符串拼接
- [SQL]连接结果字符串
- [sql server] 合并字符串
- DiscuzX2.5数据库字典
- 文档摘要自动提取算法——抽取式
- 私募宝是什么?
- Oracle Coherence中文教程一:入门
- IOS中属性的关键修饰词:strong weak assign copy retain等。。
- sql 合并结果集 保存到字符串
- webrtc时序逻辑
- 移除DOM元素
- GitHub Pages博客诞生记
- 百度的HTTPS
- Spring的注解注入及区别
- ViewPager的使用方法(实现左右滑动切换页面)
- 发布iOS应用(xcode5)到App Store(苹果商店) 详细解析
- 从功能实现的细节看SOA与OOA,以及SOA的优势何在