联合查询求救,在线等.

sdav 2010-06-04 09:41:27
-------------------------------------------------------------------------
比如我有一个字典表 T_Dic,表内有两列:ID,DicVal,该表存有两个字典,分别是
年级字典:
1 一年级
2 二年级
3 三年级
4 四年级
5 五年级
6 六年级

优秀等级字典:
7 特优
8 优秀
9 一般
10 差
11 留校观察
另外有一个学生表,T_Pupil,表内有四列:ID,姓名,性别,年级,优秀等级,
该表中年级和优秀等级是字典中的DicVal
--------------------------------------------------------------------
我想做出以下查询,该如何做???
--------------------------------------------------------------------
年级 特优 优秀 一般 差 留校观察
--------------------------------------------------------------------
1 一年级 30 60 92 0 0
2 二年级 12 35 86 2 1
3 三年级 20 50 57 15 2
4 四年级 11 26 93 6 2
5 五年级 16 22 91 11 1
6 六年级 11 25 102 6 4
--------------------------------------------------------------------
我想做出以上查询,该如何做???
--------------------------------------------------------------------
...全文
130 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuxinglian 2010-06-04
  • 打赏
  • 举报
回复
select 
t2.dicval,
sum(decode(tb.优秀等级,7, tb.cnt)) 特优,
sum(decode(tb.优秀等级,8, tb.cnt)) 优秀,
sum(decode(tb.优秀等级,9, tb.cnt)) 一般,
sum(decode(tb.优秀等级,10, tb.cnt)) 差,
sum(decode(tb.优秀等级,11, tb.cnt)) 留校观察
from
(select t.年级, t.优秀等级, count(1) cnt from t_pupil t group by t.年级, t.优秀等级 ) tb
left join
t_dic t2 on t2.id=tb.年级
group by
t2.dicval;
sdav 2010-06-04
  • 打赏
  • 举报
回复
楼上这回答也太那啥了吧?汗一把.
iqlife 2010-06-04
  • 打赏
  • 举报
回复
你先按年级统计出每个等级的人数,
然后按照优秀等级进行行转列...

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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