SQL 2005 当我们想将某个字段相同的几行数据合并为一列显示的时候 合并列值
来源:互联网 发布:软件验收测试报告 编辑:程序博客网 时间:2024/06/05 18:21
问题描述:
无论是在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.创建处理函数
CREATEFUNCTION dbo.f_str(@idint)
RETURNSvarchar(8000)
AS
BEGIN
DECLARE @r varchar(8000)
SET @r = ''
SELECT @r = @r +',' + value
FROM tb
WHERE id=@id
RETURN STUFF(@r, 1, 1,'')
END
GO
--调用函数
SELECt id,values=dbo.f_str(id)
FROM tb
GROUPBY id
2. 新的解决方法
--示例数据
DECLARE @tTABLE(id int, valuevarchar(10))
INSERT @tSELECT 1, 'aa'
UNIONALL SELECT 1,'bb'
UNIONALL SELECT 2,'aaa'
UNIONALL SELECT 2,'bbb'
UNIONALL SELECT 2,'ccc'
--查询处理
SELECT*
FROM(
SELECT DISTINCT
id
FROM @t
)A
OUTERAPPLY(
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中如何把表中具有相同值列的多行数据合并成一行
- Context Menu的使用+为ListView绑定监听器——开源项目Standup Timer学习总结(二)
- Excel常用技巧
- MFC拆分字符串
- CString和CStringArray类型数据的转换
- poj 3050(dfs+回溯或bfs均可)
- SQL 2005 当我们想将某个字段相同的几行数据合并为一列显示的时候 合并列值
- plsql登录,提示框“没有登录”_oracle
- JSTL 标签库 下载及配置
- MFC 改变控件字体大小
- ln 命令
- 实时3D图形技术的进化历史1
- gtk与openGL的结合--gtkglext
- 移动视频客户端详细对比
- HTTPool-异步交互数据+进程池