巧用ORACLE中的分析函数row_number()

  • winmenaruto
  • (pangpang)
  • 等 级:
  • 结帖率:
楼主发表于:2009-08-05 14:03:02
Student表有三列,分别是姓名、课程、成绩
Name  Curricula    Mark
张三    语文        70
李四    数学        80
王朝    英语        59
城南    马哲        70
王朝    语文        90
。。。。。。。。。。。

我想得到的效果是,列出各个学科及格的人名:
语文    化学    数学
张三            李四
王朝

怎么弄呢?学科不止3门,可能有八门,后面都省略不写了   

 

 

     

SQL code
  
  
-- TEST DATA: Name Curricula Mark 张三 语文 70 李四 数学 80 王朝 英语 59 城南 马哲 70 王朝 语文 90 -- SQL: select sn, max ( case when Curricula = ' 语文 ' then name end ) 语文, max ( case when Curricula = ' 数学 ' then name end ) 数学, max ( case when Curricula = ' 英语 ' then name end ) 英语, max ( case when Curricula = ' 马哲 ' then name end ) 马哲 from ( select name,curricula,mark, row_number() over (partition by curricula order by name) sn from t where mark > 59 ) group by sn -- RESULT: 语文 数学 英语 马哲 1 张三 李四 城南 2 王朝
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值