各位,麻烦看下我的这个SQL语句有什么问题,select  case when tjks='0203' and rq=to_char(add_months(to_date(rq,'yyyymmdd'),-12),'yyyymmdd') then sum(zyrs) else 0 end as d from hzb group by rq,tjks
为什么我运行后是空的
我想求同期的zyrs

解决方案 »

  1.   

    你的语句些的有问题,试试我这个:select sum(case when tjks = '0203' and rq = to_char(add_months(to_date(rq, 'yyyymmdd'), -12), 'yyyymmdd') 
                    then zyrs
                    else 0
               end) total_zyrs
      from hzb
      

  2.   

    我的rq是字符型的,但是我引用的时候已经to_date 了,数据格式是number的,但是我把sum放到then后面就不报错,但是没有值,都是空的
      

  3.   

    rq=to_char(add_months(to_date(rq,'yyyymmdd'),-12),'yyyymmdd')rq = rq 减 12 个月,这个条件,永远不会成立。
      

  4.   

    那应该怎么写,关于同期的算法
    ----------------------------------------------------------------------------------------------------
    当然不会成立,rq是变量吗?是的话,rq值怎么会同时存在2个不同的值。
    如果是一个字段就更不可能了 
      

  5.   


    select  rq,tjks,case when tjks='0203'  then sum(zyrs) else 0 end as dq,
      (select sum(zyrs) from hzb b where b.tjks='0203 and b.rq=to_char(add_months(to_date(a.rq,'yyyymmdd'),-12),'yyyymmdd')) sq 
      from hzb a group by rq,tjks