例如有张表TABLE_A有两个字段
课程  学生
英语   A
英语   B
英语   C
英语   ..如何用SQL在一行显示:
课程    学生
英语  A,B,C,D,E,F.....
(假设学生字段无限长)

解决方案 »

  1.   


    select 课程,wm_concat(学生)
      from table_a
     group by 课程;
      

  2.   

    SQL> with T as(
      2  select '英语' 课程,'张三' 学生 from dual
      3  union all
      4  select '英语' 课程,'李四' 学生 from dual
      5  union all
      6  select '英语' 课程,'王五' 学生 from dual
      7  union all
      8  select '数学' 课程,'刘二' 学生 from dual
      9  union all
     10  select '英语' 课程,'Name1' 学生 from dual
     11  union all
     12  select '数学' 课程,'Name2' 学生 from dual
     13  union all
     14  select '英语' 课程,'Name3' 学生 from dual
     15  union all
     16  select '数学' 课程,'Name4' 学生 from dual
     17  union all
     18  select '英语' 课程,'Name5' 学生 from dual)
     19  select 课程,wm_concat(学生) as 学生 from T group by 课程;
     
    课程 学生
    ---- --------------------------------------------------------------------------------
    数学 刘二,Name2,Name4
    英语 张三,李四,Name5,Name3,Name1,王五
     
    SQL>