日期:2014-05-17  浏览次数:20671 次

嵌套执行SQL的问题
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库,有个数据库里就是无法执行,不报错,就是长时间的等待,就像死机一样,
而在其他库却可以正常执行,没有任何问题。

------解决方案--------------------
你看看你数据表是不是有数据产生递归了
估计主要是
START WITH dwid = 1 CONNECT BY SJDW = PRIOR DWID引起的
------解决方案--------------------
没听说过同一版本的数据库还挑食的...

不过只想查count(id)为何要用这么复杂的语句?
------解决方案--------------------
数据是否分析、初始参数配置等都可以影响sql的执行计划,执行计划不一样,成本就会差别很大,消耗的时间就会差别很大哦。
长时间没有反应,可能是计划不对。

引用楼主 grass_root 的帖子:
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(decod…

------解决方案--------------------
你看看是不是产生了锁而造成的