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这里缺失右括号 展开
新增表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这里缺失右括号 展开
展开全部
可以写成两个子查询,然后用外连接把两个子查询相同的字段连接起来。
追问
我就是不想用连接,想知道有没有别的方法
追答
外连接应该是必须的,因为你查询到的学号,有些只在第一个子查询中出现,有些只在第二个子查询中出现。
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 (+)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询