oracle如何实现列转换行啊

Patrick-Leo 2008-08-07 11:25:11
例如:

课程表course

id kecheng

1 英语

2 化学

3 数学

4 语文

考试成绩表grade

id xuehao kecheng_id chengji

1 110 1 66

2 110 2 88

3 110 3 98

4 110 4 99

5 111 ........................

........................................

学生表student

id xuehao student_name

1 110 张三

2 111

..............



我要实现成如下:

student_name xuehao 英语 化学 数学 语文

张三 110 66 88 98 99

....................................................................................

...全文
438 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Patrick-Leo 2008-09-03
  • 打赏
  • 举报
回复
谢谢各位了
skyhits1921 2008-08-20
  • 打赏
  • 举报
回复
[Q]如何实现行列转换
[A]1、固定列数的行列转换

student subject grade
---------------------------
student1 语文 80
student1 数学 70
student1 英语 60
student2 语文 90
student2 数学 80
student2 英语 100
……
转换为
语文 数学 英语
student1 80 70 60
student2 90 80 100
……
语句如下:
select student,sum(decode(subject,'语文', grade,null)) "语文",
sum(decode(subject,'数学', grade,null)) "数学",
sum(decode(subject,'英语', grade,null)) "英语"
from table
group by student
todayg 2008-08-08
  • 打赏
  • 举报
回复
用decode函数
sulins 2008-08-08
  • 打赏
  • 举报
回复
列转行、行转列,我回答过很多次。
遇到问题时,先在论坛内搜索。
chenqingyu 2008-08-07
  • 打赏
  • 举报
回复
select t.student_name,
t.xuehao,
max(decode(t.kecheng,'英语',t.chengji)) '英语',
max(decode(t.kecheng,'化学',t.chengji)) '化学',
max(decode(t.kecheng,'数学',t.chengji)) '数学',
max(decode(t.kecheng,'语文',t.chengji)) '语文'
from
(select s.student_name,s.xuehao,c.kecheng,g.chengji
from student s
left join grade g on s.xuehao=g.xuehao
left join course c on s.kecheng_id=c.id) t
group by student_name,xuehao


差不多就这样了
Patrick-Leo 2008-08-07
  • 打赏
  • 举报
回复
会的赶紧帮帮忙啊!谢谢了啊!

17,090

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧