|
jinaqu 发表于 2014-12-18 18:37 ![]()
帮忙搞搞看,我没搞出来
搞出来比较麻烦,有没有简便的,11g 行列互转也可以用 pivot和unpivo- demo@gavindb>l
- 1 SELECT r.lession_name,
- 2 MAX(DECODE(r.rank,1,r.top,NULL)) top1,
- 3 MAX(DECODE(r.rank,2,r.top,NULL)) top2,
- 4 MAX(DECODE(r.rank,3,r.top,NULL)) top3
- 5 FROM (
- 6 WITH p AS(
- 7 SELECT lession_id,
- 8 score,
- 9 stu_id,
- 10 RANK() OVER(PARTITION BY lession_id ORDER BY score DESC) rank
- 11 FROM t_score
- 12 GROUP BY lession_id,score,stu_id
- 13 )
- 14 SELECT m.lession_id,m.lession_name,n.stu_name ||'+'|| u.score top,u.rank
- 15 FROM t_lession m,t_stu_profile n,p u
- 16 WHERE m.lession_id = u.lession_id
- 17 AND n.stu_id = u.stu_id
- 18 ORDER BY u.lession_id,u.rank
- 19 ) r
- 20* GROUP BY r.lession_name
- demo@gavindb>/
- LESSION_NAME TOP1 TOP2 TOP3
- --------------- --------------- --------------- ---------------
- 数据 郭东+86
- 物理 李西+75
- 化学 钱南+98
- 英语 张北+85
- 语文 郭东+90 李西+84
复制代码 |
|