关闭

oracle行转列 和 列转行

174人阅读 评论(0) 收藏 举报

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

学生表

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

课程表

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

分数表

分数 课程ID 学生ID
98 1 1
95 2 1
80 1 2
85 2 2
 把上面三张表显示成
姓名 语文成绩 数学成绩
张三 98 95
李四 80 85

运用子查询

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

至于列转行的方法就是用

 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1478次
    • 积分:40
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章存档