小弟现在想对一张表中的数据进行分组查询,要求是按照日期字段分组查询最近半年内的Val字段之和(例如现在是12月,则查询7-12月的记录),同时如果涉及到的时间范围内存在没有数据的情况(例如12月查询时7月没有数据)则显示0。请教各位前辈怎么写这条SQL语句,万分感谢!

解决方案 »

  1.   

    select sum(val)
    from Ta
    group by date.month
      

  2.   

    zhigang_33(正在编码) 前辈,谢谢您指点,分组小弟自己解决得差不多了,但是这个"没有数据则显示0"应该怎么处理?谢谢
      

  3.   

    那就是用nvl()了吧,nvl(,0)
      

  4.   

    select t.mon,nvl(tt.val,0) val from 
    (select trunc(add_months(sysdate,-rownum+1),'mm') mon from col where rownum<7) t,
    (select trunc(coldate,'mm') mon2,sum(val) val from tbname 
    where coldate>trunc(add_months(sysdate,-6),'mm') group by trunc(coldate,'mm')) tt
    t.mon = tt.mon2(+);