日期:2014-05-18  浏览次数:20764 次

求一个比较难的sql语句
表   aa
mid   stype   syear       stable       imark     sprovice
1       理科       2006     本科一批       503         辽宁
2       理科       2006     本科二批       403         辽宁
怎么才能得到如下结果:

              本科一批           本科二批
2002       503                       403


特别求助


------解决方案--------------------
drop table aa
go
create table aa(mid int,stype varchar(10),syear char(4),stable varchar(20),imark int,sprovice varchar(10))
insert into aa
select 1, ' 理科 ', '2006 ', '本科一批 ',503, '辽宁 '
union all select 2, '理科 ', '2006 ', '本科二批 ',403, '辽宁 '
declare @sql varchar(1000)
set @sql= ' '
select @sql=@sql+ ',max(case when stable= ' ' '+stable+ ' ' ' then imark else 0 end) as ' ' '+stable+ ' ' ' '
from (select distinct stable from aa)t
exec( 'select syear '+@sql+ ' from aa group by syear ')
/*
syear 本科二批 本科一批
----- ----------- -----------
2006 403 503
*/