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
/*
newcol col3 col4
--------------------------------------
11111-222,1111-333 A 1
2222-999,3333-111 B 2
*/
drop table tb
drop function f_str