Oracle怎么按不同条件查询得到两个不同的列,并且生成作为同一个表的两列?

比如新增表Credits(SNO,SumCredit,NoPass),表示每学生已通过选修课程的合计学分数,以及不及格的课程数。合计学分数和不及格课程数的条件不一样,怎么... 比如
新增表Credits(SNO,SumCredit,NoPass),表示每学生已通过选修课程的合计学分数,以及不及格的课程数。
合计学分数和不及格课程数的条件不一样,怎么查询?
Create table Credits as
(
(SELECT SNO FROM SC) NATURAL JOIN
(SELECT SNO,SUM(CREDIT) SUMCREDIT FROM SC NATURAL JOIN COURSES WHERE SC.GRADE>59) natural join
(SELECT SNO, COUNT(CNO) NOPASS FROM SC NATURAL JOIN COURSES WHERE SC.GRADE<60)
);
我用这样的连接查询也不行,Oracle说

(SELECT SNO FROM SC) NATURAL JOIN
这一句的Natural的N这里缺失右括号
展开
 我来答
quziguang

推荐于2017-09-29 · TA获得超过3479个赞
知道大有可为答主
回答量:4965
采纳率:84%
帮助的人:940万
展开全部
可以写成两个子查询,然后用外连接把两个子查询相同的字段连接起来。
追问
我就是不想用连接,想知道有没有别的方法
追答
外连接应该是必须的,因为你查询到的学号,有些只在第一个子查询中出现,有些只在第二个子查询中出现。
select a.sno, b.sumcredit, c.nopass from

(SELECT SNO FROM SC) a,
(SELECT SNO,SUM(CREDIT) SUMCREDIT FROM SC NATURAL JOIN COURSES WHERE SC.GRADE>59) b,
(SELECT SNO, COUNT(CNO) NOPASS FROM SC NATURAL JOIN COURSES WHERE SC.GRADE<60) c
where a.sno = b.sno (+)

and a.sno = c.sno (+)
苍穹陆帝
2014-05-24 · 超过57用户采纳过TA的回答
知道小有建树答主
回答量:152
采纳率:0%
帮助的人:106万
展开全部
你是要在一行上显示两个结果吗?还是每个人只能有这两种情况中的一种
追问
求详细点的语句
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
紫罗兰LOVEKN
2020-11-16
知道答主
回答量:61
采纳率:0%
帮助的人:6.9万
展开全部
同问,我用 LEFT JOIN将两个子查询链接了,同求跟简洁的方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式