oracle行转列 和 列转行

最近在面试的时候碰到这样一个问题有三个表 分别为 学生表(student) 课程表(course) 分数表(score)

学生表

学生Id学生姓名
1张三
2李四

课程表

课程ID课程名
1语文
2数学

分数表

分数课程ID学生ID
9811
9521
8012
8522
 把上面三张表显示成
姓名语文成绩数学成绩
张三9895
李四8085

运用子查询

select  student.stuent_id ,(select score from score where score.stuent_id = s1.student_id and score.course.course_id = 1),,(select score from score where score.stuent_id = s1.student_id and score.course.course_id = 2)  From student  s1

行转列

select  s1.name min(decode(score.course_id ,1,score)),min(decode(score.course_id ,2,score)) FROM STUENT ,SCORE WHERE STUDENT.STUDENT_ID = SCORE.STUDENT_ID GROUP BY NAME

至于列转行的方法就是用

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值