本帖最后由 xiaofirehu 于 2014-09-12 10:29:37 编辑

解决方案 »

  1.   

    FDATE数据本身应该是带小时分秒的
    用下面语句查询你的两个表,看看是否有差别
    select to_char(FDATE,'yyyy-mm-dd hh24:mi:ss') from T
      

  2.   

    谢回复,不过肯定和时间字段没有任何关系,通过我提供的数据就能看出来。
     再原表和BAK表是一模一样的
    且在原表上取消排序查询,结果是正常的
    SELECT A.FQZDM, A.FDATE, A.FSZSH, B.FQZDM, B.FDATE, B.FSZSH
      FROM CSQZXX A,
           (SELECT MAX(FDATE) AS FDATE, FQZDM, FSZSH
              FROM CSQZXX
             WHERE FDATE <= TO_DATE('2014-09-12', 'YYYY-MM-DD')
             GROUP BY FQZDM, FSZSH) B
     WHERE A.FQZDM = B.FQZDM
       AND A.FDATE = B.FDATE
       AND A.FSZSH = B.FSZSH
    --ORDER BY A.FQZDM, A.FDATE DESC;
      

  3.   

    你的数据中FSZSH 那个是空值吗?很奇怪 sql中空和空能直接用等号比较吗?
      

  4.   

    进一步测试发现只要在那个查询里加个 ORDER BY 就会导致数据异常,甚至ORDER BY常量都一样,把该表数据清空在写入一样的数据查询也一样的错误结果,当只要不是这个表就没问题。奇怪了
      

  5.   

    那个不是null ,那个是空格。再有。。你怎么不看正常的结果。算了。我还是去找看看能不能跟踪出什么日志看看这个表内部有什么问题
      

  6.   

    LZ 新建的表是如何建立的?CTAS 方式,还是先 create table 后又通过 PLSQL 把数据粘贴过去的?
      

  7.   

    都说一模一样了。。我不是新手。。
      后来我把以前的表DROP了,重建,问题解决
    唉  就是不知道这是什么问题,怎么产生再说这帖子里不是已经可以看到数据了  用到的东西就那些  你们都在纠结些什么
      

  8.   

    就当oracle抽风了
    按照楼主说的我感觉是oracle出bug了,之前我在10g环境下也出现过bug,同样环境,一个简单ddl语句一次报错一次没有,屡试不爽。