`

【SQL常用问题】——合并列值

 
阅读更多
合并列值
--*******************************************************************************************
表结构,数据如下:
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
/*
id          value     
----------- -----------
1          aa,bb
2          aaa,bbb,ccc
(所影响的行数为 2 行)
*/
--===================================================================================
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

/*
id          values
----------- -----------
1          aa,bb
2          aaa,bbb,ccc

(2 行受影响)
*/

--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

/*
id          values
----------- --------------------
1          aa,bb
2          aaa,bbb,ccc

(2 row(s) affected)

*/
分享到:
评论

相关推荐

    SQL语法大全——中文版.pdf

    4. 数据查询语言(DQL):用于从数据库中检索信息,是SQL中最常用的部分,主要包括SELECT语句。 二、SELECT语句 SELECT语句是SQL的核心,用于从一个或多个表中检索数据。基本形式为: ```sql SELECT column1, ...

    SQL操作全集——常用的SQL语句

    SQL,全称Structured Query Language,是一种用于管理关系数据库的标准编程语言。它包含了三大类操作:DDL(Data Definition Language,数据定义语言)、DML(Data Manipulation Language,数据操纵语言)和DCL...

    SQL优化方案——性能优化

    ### SQL优化方案——性能优化 #### 一、引言 SQL优化是数据库管理中的关键环节之一,它直接关系到数据库系统的整体性能。合理的SQL优化能够显著提升查询速度、减少资源消耗,进而改善用户体验。本文根据提供的文件...

    SQL大总结——转载经典——价值过亿

    在IT领域,SQL(Structured Query Language)是一种用于管理和处理...由于没有具体的文档内容,以上是根据标题和描述推测的SQL核心知识点,实际内容可能会更丰富,包括更具体的操作示例、最佳实践以及常见问题解答等。

    sql查询语句——关系代数.pdf

    SQL查询语句——关系代数 关系代数是由E.F.Codd于1970年提出的,是一种使用表和行来表示关系和实体的形式语言。在关系代数中,关系运算符有八种:选取、投影、笛卡尔积、并、交、差、连接和除。 1. 选取运算符:...

    【Java开发bug100例】1.java代码实现合并列(csdn)————程序.pdf

    在Java开发过程中,合并列是一项常见的任务,尤其是在处理数据库查询或者数据处理时。这个bug100例的第一部分就是关于如何使用Java代码实现合并列。这里我们看到一个使用Java 8 Stream API的例子,该例子展示了如何...

    SQL编程语句大全——主要介绍SQL的编程常见命令

    在“SQL编程语句大全”中,我们通常会涵盖以下核心概念和常用命令: 1. **数据查询**:SQL的基础功能是查询数据。`SELECT`语句用于从数据库中获取信息,例如`SELECT * FROM table_name`可以获取表中的所有记录。`...

    SQL注入简单总结——过滤逗号注入.pdf

    SQL注入是一种常见的安全漏洞,通常发生在应用程序将用户输入的数据直接拼接到SQL查询语句中,而不进行充分的验证和转义。"SQL注入简单总结——过滤逗号注入"的主题主要探讨了如何处理那些针对逗号(`,`)进行过滤的...

    sql server 中合并某个字段值的实例

    在SQL Server中,有时我们需要对某个字段的值进行合并,特别是在数据分析或报表生成时,这种情况很常见。本实例探讨了如何在SQL Server中合并特定字段的值,特别是针对相同ID的记录。我们将通过一个实际的例子来理解...

    《数据库——sql语法大全》

    《数据库——SQL语法大全》这本书主要讲解了如何使用SQL(Structured Query Language)这一数据库标准语言进行数据操作。SQL是用于管理关系数据库系统的核心工具,它包括基础、中级和高级的语法概念。 在SQL基础...

    sql合并相同行

    ### SQL合并相同行知识点详解 #### 一、背景与需求分析 在数据库处理过程中,我们经常会遇到需要将具有相同特征的记录进行汇总的情况。比如,本案例中的需求就是需要将同一客户的购买产品ID进行合并,形成一条记录...

    sql server 2000完全实战——数据转换报务(dts)

    SQL Server 2000中的数据转换服务(Data Transformation Services,简称DTS)是一个强大的工具,主要用于数据迁移、数据清洗和ETL(提取、转换、加载)操作。在这个完全实战教程中,我们将深入探讨DTS的各项功能和...

    简单SQL数据库语句总结——以学生成绩的管理为例描述

    简单 SQL 数据库语句总结──以学生成绩的管理为例描述 摘要:本文总结了简单 SQL 数据库语句的基本用法,以学生成绩的管理为例进行描述,涵盖了查询结果中的列名显示、精确查找、时间类型变量的处理、集函数、分组...

    数据库应用技术——SQL Server 2000简明教程电子教案

    "数据库应用技术——SQL Server 2000简明教程电子教案"这份资料很可能包含了SQL Server 2000的详细教程,涵盖了上述各个方面的知识。对于初学者,这份教程将提供概念解释、实例演示和实践指导,帮助读者快速掌握SQL ...

    从Excel到SQL数据分析进阶指南.rar

    此外,SQL提供聚合函数,如`SUM`, `AVG`, `COUNT`, `MAX`, 和 `MIN`,用于计算特定列的总和、平均值、数量、最大值和最小值。例如,计算某个列的总和: ```sql SELECT SUM(列名) FROM 表名; ``` 随着数据需求的...

    关系数据库标准语言——SQL

    - 数据查询:SELECT语句是SQL中最常用的,用于从数据库中检索数据。例如,`SELECT ID, Name FROM Students` 获取所有学生的ID和姓名。 - 数据插入:使用INSERT语句向表中添加新记录,如`INSERT INTO Students (ID,...

    sql操作,sql基本语法

    - SELECT:用于从表中检索数据,这是最常用的SQL语句。 - UPDATE:用于更新现有记录的数据。 - DELETE:用于删除表中的记录。 - ALTER:用于更改表的结构,如添加、删除或修改列。 - DROP:用于删除数据库对象...

    C#全能速查宝典

    2.2.25 SelectedColumns属性——用户选定的列集合 178 2.2.26 SelectedRows属性——用户选定的行集合 179 2.2.27 SelectionBackColor属性——文本在选中时的颜色 180 2.2.28 SelectionColor属性——插入点的文本颜色...

    SQL.rar_sql_sql 语句

    这个名为"SQL.rar_sql_sql语句"的压缩包显然包含了一份关于SQL语句的详细文档——SQL.docx,旨在提供SQL语言的基础知识和常见用法。 在SQL中,有五大基本类型的语句: 1. **数据定义语言(DDL)**:用于创建和修改...

Global site tag (gtag.js) - Google Analytics