请问一条SQL,不是很难,但可以帮忙写出一条高效点吗?有详细说明
1、首先将这个记录的公司名称字段与下面所有记录逐一比较,看公司名称字段是否一样; 
 2、如果不一样,走到下一记录继续比较; 
 3、如果公司名称一样,再比较其它各字段; 
 4、如果这个字段的值包含下面的记录该字段的值,则保留该字段的值不变; 
 如果这个字段的值不包含下面的记录该字段的值,则将该字段的值更改为该字段的值+‘&++&’+下面记录该字段的值; 
 5、比较完所有字段后,删除相同公司名称的比较的下面的这条记录,因为他的信息已经合并进入了上面的记录; 
 6、把第一条记录与所有下面的记录比较完成后,再对第二条记录与后面所有的记录做上面同样的比较、调整;直到所有记录结束。   
 举例说明: 
 原始数据库如下 
 Company	Linkman	Tel	Fax	Mobile	…… 
 公司1	1P1+1P2	1T1			 
 公司2	2P1	2T1			 
 公司3	3P1	3T1			 
 公司1	1P2	1T6			 
 公司1	1P3	1T1			 
 公司3	3P2	3T1			 
 公司2	2P1	2T1			  					 
 ……					   
 整理后数据库 
 Company	Linkman	                           Tel	…… 
 公司1	1P1+1P2&++&1P3	1T1&++&1T6	 
 公司2	2P1	                           2T1	 
 公司3	3P1&++&3P2	3T1	  			  						 
 ……			   
 合并过程说明: 
 包含的保留原值,如:公司1的联系人字段1P1+1P2与下面公司1的记录的1P2;公司2的联系人字段2P1、电话字段2T1; 
 不包含的就相加,如:公司1的联系人字段1P1+1P2&++&1P3;   
 ---------- 
 谢谢! 
------解决方案--------------------create function fn_Linkman( 
 @Company varchar(30) 
 )  
 returns varchar(300) 
 as 
 begin 
    declare @r varchar(300) 
    set @r= ' ' 
    select @r=@r+ '&++& '+isnull(Linkman, ' ') from 原始数据库 where Company=@Company group by Linkman 
    if @r <>  ' ' 
       set @r=stuff(@r,1,4, ' ') 
    return @r 
 end   
 go   
 create function fn_Tel( 
 @Company varchar(30) 
 )  
 returns varchar(300) 
 as 
 begin 
    declare @r varchar(300) 
    set @r= ' ' 
    select @r=@r+ '&++& '+isnull(Tel, ' ') from 原始数据库 where Company=@Company group by Tel 
    if @r <>  ' ' 
       set @r=stuff(@r,1,4, ' ') 
    return @r 
 end   
 go 
 ...   
 --调用 
 select Company,dbo.fn_Linkman(Company) as Linkman,dbo.fn_Tel(Company) as Tel 
 from 原始数据库 
 group by Company 
------解决方案--------------------楼上的,楼主要求的是去掉包含的记录 
 而你的结果是 
 Company	Linkman	                  Tel 
 公司1	1P1+1P2&++&1P2&++&1P3	1T1&++&1T6 
 公司2	2P1	2T1 
 公司3	3P1&++&3P2	3T1   
 要求的结果 
 Company	Linkman	         Tel	 
 公司1	1P1+1P2&++&1P3	1T1&++&1T6	 
 公司2	2P1	         2T1	 
 公司3	3P1&++&3P2	3T1
------解决方案--------------------/* 
 整理后数据库 
 Company	Linkman	      	   Tel	…… 
 公司1	1P1+1P2&++&1P3	1T1&++&1T6	 
 公司2	2P1	         2T1	 
 公司3	3P1&++&3P2	3T1 
 */ 
 declare @t1 table(company varchar(20),linkman varchar(20),tel varchar(20)) 
 declare @tb table (company varchar(20),linkman varchar(4000),tel varchar(4000)) 
 insert into @t1 
 select  '公司1 ', '1P1+1P2 ', '1T1 ' union all 
 select  '公司2 ', '2P1 ', '2T1 ' union all 
 select  '公司3 ', '3P1 ', '3T1 ' union all 
 select  '公司1 ', '1P2 ', '1T6 ' union all 
 select  '公司1 ', '1P3 ', '1T1 ' union all 
 select  '公司3 ', '3P2 ', '3T1 ' union all 
 select  '公司2 ', '2P1 ', '2T1 ' 
 --select * from @t1 
 declare @col1 varchar(20),@col2 varchar(20),@col3 varchar(20) 
 declare @ls1 varchar(20),@ls2 varchar(4000),@ls3 varchar(4000) 
 declare cur cursor for  
 select Company,Linkman,Tel from @t1 order by company 
 open cur 
 fetch next from cur into @col1,@col2,@co