1。insert into rpt_agesettle_tmp(salerid,customerid,famount,fbizdate,salerecflag,seqid)
(select salerid,customerid,famount,fbizdate,salerecflag,seqid from rpt_agesett_zz);
2。insert into rpt_agesettle_tmp(salerid,customerid,famount,fbizdate,salerecflag,seqid)
(select salerid,customerid,sum(famount),trunc(fbizdate,''DD''),salerecflag,seqid from rpt_agesett_zz
group by salerid,customerid,trunc(fbizdate,''DD''),salerecflag,seqid);执行两句不同的sql后。从rpt_agesettle_tmp里面取到的sum(famount)结果不一致。
第1句的结果是正确的。第2句的结果是不正确的并且会变化。将第2句中的
trunc(fbizdate,''DD'')去掉后结果一致。不明白是什么原因,请高手指教。

解决方案 »

  1.   

    两句INSERT STATEMENT都不一样。
    GOOGLE ORACLE DATE TRUNC
      

  2.   

    1。insert into rpt_agesettle_tmp(salerid,customerid,famount,fbizdate,salerecflag,seqid) 
    (select salerid,customerid,famount,trunc(fbizdate,''DD''),salerecflag,seqid from rpt_agesett_zz); 
    2。insert into rpt_agesettle_tmp(salerid,customerid,famount,fbizdate,salerecflag,seqid) 
    (select salerid,customerid,sum(famount),trunc(fbizdate,''DD''),salerecflag,seqid from rpt_agesett_zz 
    group by salerid,customerid,trunc(fbizdate,''DD''),salerecflag,seqid); 3。insert into rpt_agesettle_tmp(salerid,customerid,famount,salerecflag,seqid) 
    (select salerid,customerid,sum(famount),salerecflag,seqid from rpt_agesett_zz 
    group by salerid,customerid,salerecflag,seqid); 
    将第一句修改以后结果也是正确的。好象就是不汇总的时候结果是正确的或者改成3的样子直接进行汇总结果也是正确。不明白2时为什么结果不正确。郁闷。
      

  3.   


    select trunc(sysdate,'dd') from dual;--2008-10-25
    select trunc(sysdate,'yyyy') from dual;--2008-1-1
    select trunc(sysdate,'mm') from dual;--2008-10-1
    select trunc(sysdate) from dual;--2008-10-25
    另外还有trunc(for number)用法,网上google吧
      

  4.   

    好象和表里面的记录有关系。rpt_agesett_zz 这个表里面有重复行的。我给他加个主键区分一下的时候好象结果就正确了。
      

  5.   

    group by to_char(dt,'yyyy-mm-dd')
      

  6.   

    你不给具体的数据大家也不好怎么帮你找原因
    不过问题应该是在trunc函数上面了,lz应该去了解下这函数的用法和意思。