日期:2014-05-16 浏览次数:20880 次
select 违规类型, decode(to_char(违规时间,'MM'),'01',count(*)) as '1月', decode(to_char(违规时间,'MM'),'02',count(*)) as '2月', ...... decode(to_char(违规时间,'MM'),'12',count(*)) as '12月' from table group by 违规类型
------解决方案--------------------
楼上的要改下,decode(to_char(违规时间,'MM'),'01',count(*)) 会提示 违规时间 不是 group by表达式的。
create table TMP_TEST ( id NUMBER, c_type VARCHAR2(20), d_time DATE ); insert into TMP_TEST (ID, C_TYPE, D_TIME) values (1, '违规类型1', to_date('01-05-2012', 'dd-mm-yyyy')); insert into TMP_TEST (ID, C_TYPE, D_TIME) values (2, '违规类型1', to_date('17-05-2012', 'dd-mm-yyyy')); insert into TMP_TEST (ID, C_TYPE, D_TIME) values (3, '违规类型1', to_date('01-06-2012', 'dd-mm-yyyy')); insert into TMP_TEST (ID, C_TYPE, D_TIME) values (4, '违规类型1', to_date('01-08-2012', 'dd-mm-yyyy')); insert into TMP_TEST (ID, C_TYPE, D_TIME) values (5, '违规类型2', to_date('01-05-2012', 'dd-mm-yyyy')); insert into TMP_TEST (ID, C_TYPE, D_TIME) values (6, '违规类型2', to_date('01-06-2012', 'dd-mm-yyyy')); insert into TMP_TEST (ID, C_TYPE, D_TIME) values (7, '违规类型2', to_date('01-08-2012', 'dd-mm-yyyy')); commit;
------解决方案--------------------
格式大概就这样了 分别判断12月
select c_type, count(decode(to_char(d_time, 'mm'), '01', 1,0)) "1月", count(decode(to_char(d_time, 'mm'), '02', 1,0)) "2月" from TMP_TEST group by c_type;