作业帮 > 综合 > 作业

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

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/05/08 14:39:26
Oracle怎么按不同条件查询得到两个不同的列,并且生成作为同一个表的两列?
比如
新增表Credits(SNO,SumCredit,NoPass),表示每学生已通过选修课程的合计学分数,以及不及格的课程数.
合计学分数和不及格课程数的条件不一样,怎么查询?
Create table Credits as
(
\x05(SELECT SNO FROM SC) NATURAL JOIN
\x05(SELECT SNO,SUM(CREDIT) SUMCREDIT FROM SC NATURAL JOIN COURSES WHERE SC.GRADE>59) natural join
\x05(SELECT SNO,COUNT(CNO) NOPASS FROM SC NATURAL JOIN COURSES WHERE SC.GRADE
Oracle怎么按不同条件查询得到两个不同的列,并且生成作为同一个表的两列?
可以写成两个子查询,然后用外连接把两个子查询相同的字段连接起来.
再问: 我就是不想用连接,想知道有没有别的方法
再答: 外连接应该是必须的,因为你查询到的学号,有些只在第一个子查询中出现,有些只在第二个子查询中出现。
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