查询分数大于80分以上的同学资料

declare @tab table(name varchar(50),topic varchar(50),result int)
insert into @tab values('张三','语文',81)
insert into @tab values('张三','数学',85)
insert into @tab values('张三','历史',92)
insert into @tab values('张三','地理',86)
insert into @tab values('李四','语文',65)
insert into @tab values('李四','数学',90)
insert into @tab values('王五','语文',69)
insert into @tab values('王五','数学',89)
insert into @tab values('王五','历史',94)

我昨天去一公司面试,查询分数大于80分以上的同学资料,我给的答案如下,请各位高手看有没有需要简化的地方
select * from (
select name,isnull(sum(case when topic='语文' then result else null end),100) 语文,
   isnull(sum(case when topic='数学' then result else null end),100) 数学,
   isnull(sum(case when topic='历史' then result else null end),100) 历史,
   isnull(sum(case when topic='地理' then result else null end),100) 地理    
from @tab group by name) a
where a.语文>80 and a.数学>80 and  a.历史>80 and a.地理>80

posted @ 2012-02-10 14:46  wanghongxing  阅读(395)  评论(0编辑  收藏  举报