(转载)SQL 2005 当我们想将某个字段相同的几行数据合并为一列显示的时候 合并列值
来源:互联网 发布:淘宝消费者服务热线 编辑:程序博客网 时间:2024/04/30 05:10
(转载)SQL 2005 当我们想将某个字段相同的几行数据合并为一列显示的时候 合并列值
问题描述:
无论是在sql 2000,还是在 sql 2005中,都没有提供字符串的聚合函数, 所以, 当我们在处理下列要求时,会比较麻烦:
有表tb,如下:
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. 旧的解决方法
-- 1.创建处理函数
CREATE FUNCTION dbo.f_str(@id int)RETURNS varchar(8000)ASBEGIN DECLARE @r varchar(8000) SET @r = '' SELECT @r = @r + ',' + value FROM tb WHERE id=@id RETURN STUFF(@r, 1, 1, '')ENDGO-- 调用函数SELECt id, values=dbo.f_str(id)FROM tbGROUP BY id
2. 新的解决方法
-- 示例数据 DECLARE @t TABLE(id int, value varchar(10)) INSERT @t SELECT 1, 'aa' UNION ALL SELECT 1, 'bb' UNION ALL SELECT 2, 'aaa' UNION ALL SELECT 2, 'bbb' UNION ALL SELECT 2, 'ccc' -- 查询处理 SELECT * FROM( SELECT DISTINCT id FROM @t )A OUTER APPLY( SELECT [values]= STUFF(REPLACE(REPLACE( ( SELECT value FROM @t N WHERE id = A.id FOR XML AUTO ), '<N value="', ','), '"/>', ''), 1, 1, '') )N
/*--结果
id values
----------- ----------------
1 aa,bb
2 aaa,bbb,ccc
(2行受影响)
--*/
- (转载)SQL 2005 当我们想将某个字段相同的几行数据合并为一列显示的时候 合并列值
- SQL 2005 当我们想将某个字段相同的几行数据合并为一列显示的时候 合并列值
- SQL将一列多行数据合并
- SQL语句 合并列值 将一列的多个值合并成一行
- SQL语句,将select 出来的两列信息,合并成一列显示
- T_SQL 将一列多行数据合并为一行
- T_SQL 将一列多行数据合并为一行
- T_SQL 将一列多行数据合并为一行
- T_SQL 将一列多行数据合并为一行
- sql查询 ,多行数据合并成一行,并且显示合并后某一列的值拼接结果
- 合并列值-合并为一列
- 将拥有相同字段的数据项合并
- sql中怎样把同一张表中相同字段的内容合并为一条记录(不同字段的那一列每个记录后面加逗号)
- SQL 合并某些字段相同的记录
- 将在一列的以逗号隔开的列数据转化为行数据显示的函数
- EXCEL中两列合并成一列以及根据相同列的值将表中一列的值复制到另一张表中?
- Access 和 MS SQL 中合并某个字段的值
- oracle中如何把表中具有相同值列的多行数据合并成一行
- 【Android】两种动画介绍(Tween动画、Frame动画)
- Speex之一-介紹Speex
- static的使用
- php中的$_REQUEST
- TNS-12560: TNS:协议适配器错误终极配置
- (转载)SQL 2005 当我们想将某个字段相同的几行数据合并为一列显示的时候 合并列值
- 内存泄露检查
- codeforce 规则
- 升级ubunt kernel后virtualBox无法使用的问题
- 根据Google Map制作艺术品
- 什么时候使用存储过程
- Netstat的常用参数
- rails3 js css 解析
- wifi direct 详解