表1:字段:       日期     字段a       字段b   
    
  其中日期字段并不是每月都有记录,比如9月,有可能5月,7月等等在表1中无记录行。   
    
  现需要实现用sql取出数据集,该数据集为某年表1中每个月的(12)记录,比如5月,7月没记录,则取出的数据集合应该为     
    
  日期       字段a       字段b   
  01               1               1   
  02               2               2   
  .               .               .   
  .               .               .   
  .               .               .   
  05               null         null 
 06               1   
  07              2               2   
  .               .               .   
  .               .               .   
  .               .               .   
  12             
    
  请问在oracle里用sql语句该如何实现? 

解决方案 »

  1.   


    select 日期,sum(字段a),sum(字段b)
    from (
    select 日期,字段a,字段b from 表1 union all
    select '01',null,null from dual union all
    select '02',null,null from dual union all
    select '03',null,null from dual union all
    select '04',null,null from dual union all
    select '05',null,null from dual union all
    select '06',null,null from dual union all
    select '07',null,null from dual union all
    select '08',null,null from dual union all
    select '09',null,null from dual union all
    select '10',null,null from dual union all
    select '11',null,null from dual union all
    select '12',null,null from dual
    )
    group by 日期
      

  2.   

    可以弄个月份的视图来左连接
    比如
    select ........ from 
    (select to_char(rownum,'00')m from all_objects where rownum<13)a,
    table1 b
    where a.m=to_char(b.date1(+),'mm')
      and b.date1(+)<date'2010-1-1'
      and b.date1(+)>=date'2009-1-1'
    group by a.m
      

  3.   

    首先感谢大家跟帖!
    我可能没有说清楚,是这样的 我数据库里呢有个year_mon字段存的是比如200801这样的年月,可是200801-200812这十二个月中有的字段有对应的月数据,有的没有。改如何实现?还有一个问题就是如何根据这个year_mon字段来取出这12个月的每个月的总天数显示啊?