标签归档:字符串聚合

mssql sqlserver 使用sql脚本连接字符串的方法分享


摘要:
下文讲述sqlserver中使用sql脚本连接字符串的方法分享,如下所示:
实验环境:sqlserver 2008 R2


今天收到同事的需求,将数据表中的数据 按指定条件进行字符串连接起来的方法分享,下面我们将采用
stuff系统函数和xml完成此操作,具体操作方法如下所示:

 
   create table [maomao365.com]
(keyId int,
 info varchar(30))
 go
 insert into [maomao365.com]
 (keyId,info)values
 (1,'sqlserver'),
 (1,'maomao365.com'),
 (2,'猫猫小屋'),
 (2,'MSSQL'),
 (3,'sql爱好者'),
 (3,'字符串聚合'),
 (3,'字符串连接')
 go

 SELECT b.keyId , 
         text= stuff((
                 SELECT  ' '+ a.info
                   FROM [maomao365.com]  a
                  WHERE a.keyId  = b.keyId 
                    FOR xml path('')) , 1 , 1
					, '') 
    FROM [maomao365.com]   b
  --- WHERE  b.keyId =1 
GROUP By b.keyId;


 go
 truncate table [maomao365.com]
 drop     table [maomao365.com]

相关阅读:
字符串函数 stuff 功能简介
sqlserver for xml

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