日期:2014-05-17 浏览次数:20628 次
-- data
if object_id('tempdb.dbo.#tb') is not null drop table #tb
create table #tb(B varchar(8), C varchar(8), D varchar(8))
insert into #tb
select '张一', '语文', '体育' union all
select '张二', '语文', '体育' union all
select '张三', '数学', '美术' union all
select '张四', '语文', '美术'
-- query
;with comp as
(
select C, D, S = stuff((select ','+B from #tb where C=t.C and D=t.D for xml path('')),1,1,'') from #tb t group by C, D
)
select * from comp t pivot(max(S) for D in (体育,美术)) p
/*
C 体育 美术
-------- --------- ---------
数学 NULL 张三
语文 张一,张二 张四
*/