--建立函数
create function f_getnamelist(@s_train varchar(20))
returns varchar(100)
as
begin
declare @s_name varchar(100)
set @s_name = ''select @s_name = rtrim(@s_name) + ' ' + rtrim(人员) from table
where 培训名称 = @s_trainreturn @s_name
end
--调用
select namelist.培训名称,
namelist.单位名称,
dbo.f_getnamelist(namelist.培训名称)
from (select distinct 培训名称,单位名称 from table) as namelist
create function f_getnamelist(@s_train varchar(20))
returns varchar(100)
as
begin
declare @s_name varchar(100)
set @s_name = ''select @s_name = rtrim(@s_name) + ' ' + rtrim(人员) from table
where 培训名称 = @s_trainreturn @s_name
end
--调用
select namelist.培训名称,
namelist.单位名称,
dbo.f_getnamelist(namelist.培训名称)
from (select distinct 培训名称,单位名称 from table) as namelist
create table [table] (培訓名稱 varchar(50), 單位名稱 varchar(50),人員 varchar(20))
insert into [table]
select '第一期', 'A' , '小張' union all
select '第一期' , 'A' , '小沈' union all
select '第一期' , 'B' , '小紅' union all
select '第二期' , ' C ' , '小單' union all
select '第二期' , 'E' , ' 小容' union all
select '第二期' , 'C' , '小陳'
--測試
select A.培訓名稱,A.單位名稱 ,A.人員 into #tb
from [table] A,[table] B
where a.培訓名稱=b.培訓名稱 and a.單位名稱=b.單位名稱 and A.人員<>B.人員select distinct 單位名稱,min(人員) as 人員
from
(
select A.人員+','+B.人員 as 人員,A.單位名稱 from #tb A ,#tb B
where A.單位名稱=B.單位名稱 and A.人員<>B.人員
)C
group by 單位名稱
--刪除測試環境
drop table #tb
drop table [table]
rtrim()函數
select A.培訓名稱,A.單位名稱 ,A.人員 into #tb
from [table] A,[table] B
where rtrim(a.培訓名稱)=rtrim(b.培訓名稱) and
rtrim(a.單位名稱)=rtrim(b.單位名稱) and rtrim(A.人員)<>rtrim(B.人員)select distinct 單位名稱,min(人員) as 人員
from
(
select A.人員+','+B.人員 as 人員,A.單位名稱 from #tb A ,#tb B
where rtrim(A.單位名稱)=rtrim(B.單位名稱) and rtrim(A.人員)<>rtrim(B.人員)
)C
group by 單位名稱
select A.培訓名稱,A.單位名稱 ,A.人員 into #tb
from table5 A,table5 B
where Ltrim(a.培訓名稱)=Ltrim(b.培訓名稱) and
Ltrim(a.單位名稱)=Ltrim(b.單位名稱) and Ltrim(A.人員)<>Ltrim(B.人員)
select * from
(
select min(培訓名稱) as 培訓名稱,單位名稱,min(人員) as 人員
from
(
select A.培訓名稱,A.人員+','+B.人員 as 人員,A.單位名稱 from #tb A ,#tb B
where Ltrim(A.單位名稱)=Ltrim(B.單位名稱) and Ltrim(A.人員)<>Ltrim(B.人員)
)C
group by 單位名稱
union all
select * from table5
where 單位名稱 not in
(
select distinct A.單位名稱 from #tb A ,#tb B
where Ltrim(A.單位名稱)=Ltrim(B.單位名稱) and Ltrim(A.人員)<>Ltrim(B.人員)
)
)D
order by 培訓名稱注﹕最好用Rtrim(Ltrim(' String '))代替Ltrim('String')