我试图给出这个查询:
select s_name, course from Student group by course;
但是我收到一个错误(ORA-00979 Not a GROUP BY EXPRESSION)。
我想列出同一门课程中所有学生的姓名。还有另一种方法吗?如果不是,实现此查询的正确方法是什么?如果有人能给我所需的确切代码,我将不胜感激。
一种变体(Oracle 11g):
select course, listagg(s_name, ', ') within group (order by s_name)
from student
group by course;
Oracle 10g(未记录的秘密函数wm_concat)
select course, wm_concat(s_name)
from student
group by course;
对于你想要的,你不应该使用GROUP BY
. GROUP BY 的目的是汇总每个组的信息。
由于您需要每门课程的详细信息,因此您应该使用它ORDER BY
来确保您的输出简单地与同一课程中的学生一起列出。
select s_name, course
from Student
order by course
有关GROUP BY
预期用途的示例,请尝试以下操作:
select course, COUNT(*) as NumStudents
from Student
group by course