SQL查询语句

--行转列
表1:course
id name
1  语文
2  数学
3  英语

表2:result
id sid          course  result
1  2005001       语文    80.0
2  2005001       数学    90.0
3  2005001       英语    80.0
4  2005002       语文    56.0
5  2005002       数学    69.0
6  2005002       英语    89.0

declare @sql varchar(8000)
set @sql='select sid'
select @sql=@sql+','+course.name+'=isnull(sum(case course when '''+course.name+''' then result end),0)'
 from course order by id
set @sql=@sql+' from result group by sid order by sid'
print @sql
exec(@sql)

得出结果
sid           语文 数学 英语
2005001 80.0  90.0  80.0
2005002 56.0  69.0  89.0


--排名

1 55.6000 NULL
2 55.6000 NULL
3 78.0000 NULL
4 68.0000 NULL


select *,排名 = (select count(distince(fen)) from abc where b> t.b)+ 1 from abc t order by 排名
select *,(select count(distince(fen))+1 from abc a where a.b>b.b) from abc b order by b desc

posted on 2007-11-06 17:58  lei1217  阅读(197)  评论(0编辑  收藏  举报

导航