Oracle将1到多个关系转换为单行

时间:2016-06-27 13:28:52

标签: sql oracle

我有2个Oracle(Oracle 12)表

StudentTable
s_id number
s_name varchar

Data in Table -->  1   Joe


ClassTable
c_student_id number
c_className varchar

Data in table -->  1   Math
                   1   History
                   1   Sceince

我想写一个查询,它将占用3行并将其转换为1个逗号分隔列。

我希望我的输出如下所示:

Joe    Math, History, Science

有没有办法创建此查询?

1 个答案:

答案 0 :(得分:3)

SELECT MAX( s_name ) KEEP ( DENSE_RANK FIRST ORDER BY s.s_id ) AS name,
       LISTAGG( c_class_name, ', ' ) WITHIN GROUP ( ORDER BY ROWNUM ) AS classes
FROM   Students s
       INNER JOIN
       Classes c
       ON ( s.s_id = c.c_student_id )
GROUP BY s.s_id;