`
isiqi
  • 浏览: 16852165 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

【交流】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)

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

GROUP BY id

--2.新的解决方法

-- 示例数据

DECLARE @t TABLE(id int, value varchar(10))

INSERT @t SELECT 1, 'aa'

UNION ALL SELECT 1, 'bb'

<place w:st="on"><span lang="EN-US" style='font-size: 9pt; color: blue; font-family: "Courier New";'>UNION</span></place> ALL SELECT 2, 'aaa'

UNION ALL SELECT 2, 'bbb'

<place w:st="on"><span lang="EN-US" style='font-size: 9pt; color: blue; font-family: "Courier New";'>UNION</span></place> 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 行受影响)

--*/

:合并与分拆的CLR sql2005的示例中有:
在安装sql 2005的示例后,默认安装目录为 drive:\Program Files\Microsoft SQL Server\90\Samples\Engine\Programmability\CLR\StringUtilities



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=784287

分享到:
评论

相关推荐

    解析SQL Server 2005溢用之:合并列值

    在本文中,我们将深入探讨如何在SQL Server 2005中合并列值,特别是针对描述中的示例。 首先,我们来看一下在SQL Server 2000中通常使用的旧方法。由于没有内置的字符串聚合函数,开发人员需要创建自定义的用户定义...

    Microsoft SQL Server 2005技术内幕:T-SQL查询的源代码

    《Microsoft SQL Server 2005技术内幕:T-SQL查询的源代码》是一本深入探讨SQL Server 2005中T-SQL查询技术的专业书籍。T-SQL(Transact-SQL)是Microsoft SQL Server数据库管理系统中用于数据操作、查询、存储过程...

    合并列值

    根据提供的信息,我们可以深入探讨如何在SQL中实现“合并列值”的操作,即如何将一个表中的多个相同或不同的值合并成一个单独的字符串。这种需求在数据处理、报告生成等场景中非常常见。 ### 合并列值 #### 标题与...

    Microsoft SQL Server 2005技术内幕:T-SQL查询.part1

    Microsoft SQL Server 2005技术内幕:T-SQL查询.part1

    Microsoft SQL Server 2005技术内幕: T-SQ程序设计

    《Microsoft SQL Server 2005技术内幕:T-SQL查询》 《Microsoft SQL Server 2005技术内幕:T-SQL程序设计》 《Microsoft SQL Server 2005技术内幕:存储引擎》 《Microsoft SQL Server 2005技术内幕:查询、调整...

    SQL Server2005 技术内幕:T-SQL查询(笔记).docx

    本笔记涵盖了 SQL Server 2005 技术内幕中 T-SQL 查询的前两章内容,主要介绍了逻辑查询处理、查询优化器、查询执行步骤、查询筛选器、聚合函数、子查询、别名的使用限制等知识点。 1.逻辑查询处理:SQL 是面向集合...

    Microsoft SQL Server 2005技术内幕:T-SQL查询.zip.002

    Microsoft SQL Server 2005技术内幕:T-SQL查询 中文

    Microsoft SQL Server 2005技术内幕: T-SQ程序设计.pdf

     是Inside Microsoft SQL Server 2005系列书中的第一本,SQL Server类的顶尖之作  全球公认SQL Server 2005经典著作,囊括大量鲜为人知的技术内幕,大师智慧、专家经验尽览无余。   本系列图书中文版得到了微软...

    SQL合并一列

    使用`FOR XML PATH`实现列合并 `FOR XML PATH`是一种非常强大的工具,可以用来构建XML格式的数据,同时也可以用来构建普通的字符串。在SQL Server中,可以通过这种方式轻松地将多行数据转换为单行数据,实现列的...

    Microsoft SQL Server 2005技术内幕:T-SQL查询

    《Microsoft SQL Server 2005技术内幕:T-SQL查询》 《Microsoft SQL Server 2005技术内幕:T-SQL程序设计》 《Microsoft SQL Server 2005技术内幕:存储引擎》 《Microsoft SQL Server 2005技术内幕:查询、调整...

    SQL Server 2005技术内幕系列打包(涵盖4本PDF).part3

    ——《Microsoft SQL Server 2005 技术内幕:T-SQL程序设计》、《Microsoft SQL Server 2005 技术内幕:T-SQL查询》、《Microsoft SQL Server 2005 技术内幕:查询、调整和优化》、《Microsoft SQL Server 2005 技术...

    《Microsoft SQL Server 2005技术内幕:T-SQL查询》示例代码

    《Microsoft SQL Server 2005技术内幕:T-SQL查询》是一本深入解析SQL Server 2005中T-SQL查询语言的专业书籍。T-SQL(Transact-SQL)是微软对标准SQL的扩展,是SQL Server的核心组件,用于数据库管理、数据查询和...

    Microsoft SQL Server 2005技术内幕:T-SQ程序设计 【中文版】 1

    Microsoft SQL Server 2005技术内幕: T-SQ程序设计 中文版本的 第一部分 第二部分地址:http://download.csdn.net/source/2680866

    sqlserver经典 2005技术内幕 中文pdf版 4本全

    SQL Server 2005是微软推出的一款关系型数据库管理系统,具有强大的数据处理能力和高度的可扩展性。这个压缩包包含四本关于SQL Server 2005技术内幕的中文PDF书籍,涵盖了从基础到高级的各个层面,是学习和掌握SQL ...

    Microsoft_SQL_Server_2005技术内幕:T-SQL查询.pdf

    本书是Inside Microsoft SQL Server 2005系列四本著作中的一本。它详细介绍了T-SQL的内部体系结构,包含了非常全面的编程参考,提供了使用Transact-SQL(T-SQL)的专家级指导,囊括了非常全面的编程参考,揭示了基于...

    sql自定义函数分组合并字符串列

    sql自定义函数,用于合并字符串列,可以在分组的情况下对varchar类型的字段合并

    sql 多行合并某一列字符串拼接的示例

    在SQL中,将多行数据合并为一行,尤其是在某一列进行字符串拼接,是一项常见的需求。这通常用于汇总数据、创建报表或者为了分析目的而整合信息。本文将深入探讨如何利用SQL实现多行数据的合并,特别关注字符串拼接的...

    Microsoft SQL Server 2005技术内幕:T-SQL查询 pdf 中文版 1

    Microsoft SQL Server 2005技术内幕:T-SQL查询 pdf 中文版 1 第一部分 第二部分地址:http://download.csdn.net/source/2684248

    SQL脚本文件合并工具

    8. **版本控制**:在团队协作环境中,使用版本控制系统如Git管理SQL脚本是很常见的,合并工具应该能与这些系统无缝集成,方便版本回溯和协同工作。 9. **安全性**:在处理敏感的数据库操作时,工具应遵循最佳安全...

    Microsoft SQL Server 2005技术内幕: T-SQ程序设计 中文版 2(4-2)

    Microsoft.Press.Inside.Microsoft.SQL.Server.2005.T-SQL.Querying

Global site tag (gtag.js) - Google Analytics