表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
姓名 科目 考试大类 考试时间
王 数学 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
然后再按照姓名做group by应该就可以了。
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;
(
姓名 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()函数用的漂亮。