select a.*
      from projinspect a
      where a.deadline <=
      (
      select count(dt_time)
      from (
           select a.createtime + level - 1  dt_time
           from dual
           connect by level <= sysdate - a.createtime + 1
           )
      where to_char(dt_time,'d') not in ('1','7')
      ) and a.ishandle=0;好奇怪,在10g中没问题,到了11g数据库中就报a.createtime标识无效,,,
请问11g中应该怎么写

解决方案 »

  1.   

    你这个在10g中执行也会有问题吧,sql中的查询是先执行子查询  select a.createtime + level - 1 dt_time
      from dual
      connect by level <= sysdate - a.createtime + 1,然后才执行外部查询的,你在内部的子查询的时候根本就没有指定a表是哪个表,oracle当然找不到了,肯定会报错的。
      

  2.   

    楼上说的对,a.createtime无法获取,当然报错
      

  3.   

    怪了 LZ确定在10g里面可以执行成功? 什么叫子查询  都隔2代了 要叫孙查询了 
      

  4.   

    10g上可以执行通过,没有问题。
    11g没有环境。不知道行不行,但是楼主报错了 估计应该是版本问题。
    这种写法也不常见,是不是oracle版本一高,底层变化了,原来凑巧支持的东西,不支持了 呵呵。。