标签归档:字符串聚合

mssql sqlserver 使用循环的方式对字符串进行聚合拼接


摘要:
下文讲述使用sql脚本对字符串进行拼接的方法分享,如下所示:
适用环境:所有sqlserver版本


众所周知,sqlserver早期版本中没有字符串聚合函数,下文将讲述使用循环的方式对字符串进行拼接,如下所示:


实现思路:
主要采用goto遍历叠加字段,
遍历聚合字段时,使用charindex检测聚合单个字符串是否被聚合,如果未聚合就进行聚合叠加

create table [maomao365] (
    book_id int identity(1,1) primary key,
    book_name varchar(20),
    book_price float,
    book_auth varchar(10)
);
--插入测试数据
insert into [maomao365] (book_name,book_price,book_auth)
                    values
                        ('猫猫小屋',25.6,'孔子'),
                        ('sqlblog',25.6,'金庸'),
                        ('经典sqlserver站1',32.7,'金庸'),
                        ('经典sqlserver站2',32.7,'金庸'),
                        ('平凡的世界',35.8,'路遥'),
                        ('史记',54.8,'司马迁');
                        
---建立临时表 
  declare @t table(
  book_auth varchar(10),
  priceSum decimal(18,2)
  ,book_name nvarchar(100)
  )
 

insert @t
select book_auth,sum(book_price),MAX(book_name) name
from [maomao365]
group by book_auth
 
  
gogo:
update @t
set book_name += (','+ a.book_name)
from [maomao365] a,@t b
where a.book_auth = B.book_auth 
and CHARINDEX(a.book_name,b.book_name) = 0
if @@ROWCOUNT > 0
begin
    GOTO gogo
end

select * from @t as t 

go

truncate table [maomao365]; 
drop     table [maomao365];
go

mssql sqlserver 使用sql脚本将字符串数据进行聚合的方法分享


摘要:
下文讲述使用sql脚本对字符串数据进行聚合的方法分享
实验环境:sql server 2012


下文通过举例的方式,讲述字符串的聚合操作方法,如下所示:
将员工的技能信息转换为每位员工一行信息的方法

    create table [员工技能表](姓名  nvarchar(10),技能 nvarchar(10))
 
insert into [员工技能表](姓名,技能)
 select '猫猫', '机修' union all
 select '妞妞', '钣金' union all
 select '美美', '喷漆' union all
 select '猫猫', '美容' union all
 select '猫猫', '发动机大修' union all
 select '妞妞', '换机油'


select 姓名,
       技能汇总=string_agg(技能,',')
 from  [员工技能表]
 group by 姓名