多行合并2列并去掉重复列

本文介绍了一种使用T-SQL实现多行数据合并及去除重复项的方法,并通过创建临时表与自定义函数来展示具体操作步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--多行合并2列并去掉重复列: 

create table tb 
(col1 
varchar(10), 
col2 
varchar(10), 
col3 
varchar(10), 
col4 
varchar(10)) 
go 

insert tb select '11111' ,   '222' ,      'A'  ,    1  
insert tb select '1111' ,   '333' ,       'A' ,     1  
insert tb select '2222' ,   '999' ,       'B' ,     2  
insert tb select '3333'  ,  '111' ,       'B' ,     2  

go 
create FUNCTION dbo.f_str(@col3 varchar(10)) 
RETURNS varchar(8000
AS 
BEGIN 
declare @str varchar(8000
set @str='' 
select  @str=@str+ 
case  
when charindex(','+col1+'-',','+@str+'-')=0  then col1+'-' 
else ''  
end+ 
case  
when charindex('-'+col2+',','-'+@str+',')=0  then col2+','  
else ''  
end 
from tb  
where col3=@col3 
return  
left(@str,len(@str)-1
END 
go 
select distinct newcol=dbo.f_str(col3),col3,col4  from tb  

drop table tb 
drop function f_str 

/* 
newcol                      col3  col4 
-------------------------------------- 
11111-222,1111-333   A       1 
2222-999,3333-111    B        2 

*/ 


    本文转自曾祥展博客园博客,原文链接:http://www.cnblogs.com/zengxiangzhan/archive/2010/01/03/1638173.html,如需转载请自行联系原作者


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值