博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL查询语句 group by后, 字符串合并
阅读量:5104 次
发布时间:2019-06-13

本文共 2653 字,大约阅读时间需要 8 分钟。

合并列值 --*******************************************************************************************表结构,数据如下: id    value ----- ------    aa    bb    aaa    bbb    ccc 需要得到结果: id    values ------ -----------      aa,bb      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      ----------- -----------          aa,bb          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             ), ' 
', ''), 1, 1, '') )N drop table tb /* id values ----------- ----------- aa,bb 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 ----------- -------------------- aa,bb aaa,bbb,ccc (2 row(s) affected) */

demo:

select  BeginCity,EndCity,FanDian,     [CangWei]=stuff((select '/'+[CangWei] from test1 t       where t.BeginCity=Test1.BeginCity  and t.EndCity=Test1.EndCity  and t.FanDian=Test1.FanDian        for xml path('')), 1, 1, '') from  Test1 group by BeginCity,EndCity,FanDian

参考:  http://bbs.csdn.net/topics/330188225

          http://bbs.csdn.net/topics/330182340

 

https://www.cnblogs.com/qixuejia/p/4241932.html

转载于:https://www.cnblogs.com/GarsonZhang/p/10462933.html

你可能感兴趣的文章
极度吸引人的Linode日本机房,已经成为华人大茅房
查看>>
hdu Catch him
查看>>
2017-10-15
查看>>
深入理解计算机系统(2.2)------进制间的转换原理
查看>>
[Windows API 函数] Delphi常用获取系统信息的函数
查看>>
[转]Some VS2005 and VS2008 Wizards Pop Up Script Error
查看>>
【转】Iframe高度自适应(兼容IE/Firefox、同域/跨域)
查看>>
JS脚本获取开发者后台所有Device
查看>>
hook resize
查看>>
程序猿是如何解决SQLServer占CPU100%的
查看>>
毕业论文时遗留的两个小问题
查看>>
[转]男人千万别跟女人说自己的弱点
查看>>
电脑分盘
查看>>
yum update过程中失败后再次执行出现“xxxx is a duplicate with xxxx”问题
查看>>
itoa()函数和sprintf()函数
查看>>
解决git仓库从http转为ssh所要处理的问题
查看>>
python笔记--socket编程
查看>>
查看iOS二进制文件所支持的arm指令集
查看>>
一键用VS编译脚本
查看>>
基于SPI的数据报过滤原理与实现
查看>>