select count(id) from 
    (
        select a.id, a.tjmc 考核名称, a.dwmc 单位名称 ,a.kssj 开始时间,a.jssj 结束时间,
        sum(decode(a.tjx,'10001',a.tjz,0)) 正常出勤,
        sum(decode(a.tjx,'10002',a.tjz,0)) 迟到,
        sum(decode(a.tjx,'10003',a.tjz,0)) 早退,
        sum(decode(a.tjx,'10004',a.tjz,0)) 病假,
        sum(decode(a.tjx,'10005',a.tjz,0)) 脱岗,
        sum(decode(a.tjx,'1006',a.tjz,0)) 缺勤 
        from cqtj a,
            (select dwid from qwgl_t_dwxx_b START WITH dwid = 1  CONNECT BY SJDW = PRIOR DWID) b 
        where a.dwid(+)=b.dwid and a.tjlx='y' group by id,tjmc,dwmc,kssj,jssj,tjlx 
   )
----------------------------------
以上SQL对数据库配置有要求吗?
同是9i库,有个数据库里就是无法执行,不报错,就是长时间的等待,就像死机一样,
而在其他库却可以正常执行,没有任何问题。

解决方案 »

  1.   

    你看看你数据表是不是有数据产生递归了
    估计主要是
    START WITH dwid = 1  CONNECT BY SJDW = PRIOR DWID引起的
      

  2.   

    没听说过同一版本的数据库还挑食的...不过只想查count(id)为何要用这么复杂的语句?
      

  3.   

    数据是否分析、初始参数配置等都可以影响sql的执行计划,执行计划不一样,成本就会差别很大,消耗的时间就会差别很大哦。
    长时间没有反应,可能是计划不对。
      

  4.   

    另外两个库结构都是一模一样的,只是业务数据不同而已。
    中间的子查询
           select a.id, a.tjmc 考核名称, a.dwmc 单位名称 ,a.kssj 开始时间,a.jssj 结束时间, 
            sum(decode(a.tjx,'10001',a.tjz,0)) 正常出勤, 
            sum(decode(a.tjx,'10002',a.tjz,0)) 迟到, 
            sum(decode(a.tjx,'10003',a.tjz,0)) 早退, 
            sum(decode(a.tjx,'10004',a.tjz,0)) 病假, 
            sum(decode(a.tjx,'10005',a.tjz,0)) 脱岗, 
            sum(decode(a.tjx,'1006',a.tjz,0)) 缺勤 
            from cqtj a, 
                (select dwid from qwgl_t_dwxx_b START WITH dwid = 1  CONNECT BY SJDW = PRIOR DWID) b 
            where a.dwid(+)=b.dwid and a.tjlx='y' group by id,tjmc,dwmc,kssj,jssj,tjlx 查询都是可以的,
    但是一count就不行。
      

  5.   

    确实是由“select dwid from qwgl_t_dwxx_b START WITH dwid = 1  CONNECT BY SJDW = PRIOR DWID”
    这个子查询引起的,
    注释掉后就可以正常,
    可是在其他库都是执行正常的,
    而这个select dwid from qwgl_t_dwxx_b START WITH dwid = 1  CONNECT BY SJDW = PRIOR DWID语句本身执行没问题啊。