表tb
姓名   科目    考试大类 考试时间
王     数学     11      2011-11-30 18:11:00
王     数学     11      2011-11-30 18:11:00
王     语文     12      2011-10-30 18:11:00
张     数学     11      2011-11-30 18:11:00 我想得出
姓名      科目           考试大类、考试时间     
王       数学2,语文1     11/11.30,12/10.30
张       数学1            11/11.30
                          

解决方案 »

  1.   

    首先按照 姓名和科目做group by
    然后再按照姓名做group by应该就可以了。
      

  2.   

    with tb as (
    select '王' name,'数学' course,  11  type,  '2011-11-30 18:11:00'   time from dual union all
    select '王' , '数学', 11, '2011-11-30 18:11:00' from dual union all
    select '王' , '语文', 12, '2011-10-30 18:11:00' from dual union all
    select '张' , '数学', 11, '2011-11-30 18:11:00' from  dual 

    select tt.name,wm_concat(tt.km),wm_concat(tt.sj) from (
    select t.name,t.course||t.a km,t.type||'/'||to_char(to_date(t.time,'yyyy-mm-dd hh24:mi:ss'),'mm.dd') sj  from (
    select  name,course,count(1) a,time,type  from tb
    group by name,course,time,type) t)tt
    group by tt.name;
      

  3.   

    测试数据:CREATE TABLE tb
    (
        姓名          VARCHAR2(20),
        科目          VARCHAR2(20),
        考试大类      NUMBER(4),
        考试时间      Date        
    );INSERT INTO tb VALUES('王', '数学', 11, to_date('2011-11-30 18:11:00', 'YYYY-MM-DD HH24:MI:SS'));
    INSERT INTO tb VALUES('王', '数学', 11, to_date('2011-11-30 18:11:00', 'YYYY-MM-DD HH24:MI:SS'));
    INSERT INTO tb VALUES('王', '语文', 12, to_date('2011-10-30 18:11:00', 'YYYY-MM-DD HH24:MI:SS'));
    INSERT INTO tb VALUES('张', '数学', 11, to_date('2011-10-30 18:11:00', 'YYYY-MM-DD HH24:MI:SS'));
    结果:
    总结:wm_concat()函数用的漂亮。
      

  4.   

    使用wm_concat()函数可以实现 ...