有一个表VOYAGE,里面有两个字段ATA_DATE,TEU_COUNT
请问我传入一个时间段V_F_ATA,V_T_ATA
怎么取到表中我要的时间段的TEU_COUNT值呢?
主要的问题是要按月份分组,其中没有数据的月份要显示出来且显示为0
比如我传入的时间段是 2006-1-1~2006-12-31  有可能8月没有数据,但也要显示0

解决方案 »

  1.   

    create table VOYAGE(ATA_DATE date,TEU_COUNT number(10));
    insert into VOYAGE values( sysdate , 1);
    insert into VOYAGE values( sysdate-1 , 1);
    insert into VOYAGE values( sysdate-32 , 1);
    insert into VOYAGE values( sysdate-64 , 1);
    insert into VOYAGE values( sysdate-96 , 1);
    insert into VOYAGE values( sysdate-128 , 1);
    insert into VOYAGE values( sysdate-160 , 1);
    create table monthUser(mon number(2));
    insert into monthUser values(1);
    insert into monthUser values(2);
    insert into monthUser values(3);
    insert into monthUser values(4);
    insert into monthUser values(5);
    insert into monthUser values(6);
    insert into monthUser values(7);
    insert into monthUser values(8);
    insert into monthUser values(9);
    insert into monthUser values(10);
    insert into monthUser values(11);
    insert into monthUser values(12);select monthUser.mon,sum(case when VOYAGE.ATA_DATE>= to_date('20070101','yyyyMMdd') and VOYAGE.ATA_DATE <= to_date('20071231','yyyyMMdd') then nvl(VOYAGE.TEU_COUNT,0) else 0 end) ATA_DATE from VOYAGE,monthUser where to_number(to_char(VOYAGE.ATA_DATE(+),'MM')) = monthUser.mon group by monthUser.mon order by monthUser.mon;比较乱,慢慢看.
      

  2.   

    shan1119的可以啊。lz只要把两个日期从外部程序传入,构造出如上语句就可以了。
      

  3.   

    参考这个帖子的回复 ...http://community.csdn.net/Expert/topic/5741/5741494.xml?temp=.7511408