我们可以在AND conditon中执行select语句(获取错误表达式错误)

时间:2012-11-20 10:31:19

标签: sql oracle10g

我正在构建一个复杂的查询。首先是我的查询

select LOSA_APP.app_ref_no AS "App.Ref.No." 
from losa_app LOSA_APP, 
     losa_app_z LOSA_APP_Z
where 
    LOSA_APP.app_status='A' 
and 
    trunc(sysdate) between (nvl(LOSA_APP_Z.li_dt, LOSA_APP_Z.li_collect_dt)) AND ((trunc(sysdate))) 
and
    (trunc(sysdate) - nvl(losa_app_z.li_dt,losa_app_z.li_collect_dt)) > 90  
and
    (select losa_app_z.app_ref_no 
     from losa_app_z 
     where (trunc(sysdate) - nvl(losa_app_z.li_dt, losa_app_z.li_collect_dt)) > 90
    )

问题是,如果我单独运行最后一个查询,或者我省略了最后一个查询,那么它运行正常,就像我只运行

 (select losa_app_z.app_ref_no 
  from losa_app_z 
  where (trunc(sysdate) - nvl(losa_app_z.li_dt, losa_app_z.li_collect_dt)) > 90)

但如果我运行整个查询,那么我得到错误

ORA-00936: missing expression
00936. 00000 -  "missing expression"
*Cause:    
*Action:
Error at Line: 7 Column: 128

第7行是我上次查询and (select losa_app_z.app_ref_no from losa_app_z....所在的行。我做错了什么?请帮忙。

由于

1 个答案:

答案 0 :(得分:0)

您应该比较此查询的结果

 and
 (select losa_app_z.app_ref_no 
  from losa_app_z 
  where (trunc(sysdate) - nvl(losa_app_z.li_dt, losa_app_z.li_collect_dt)) > 90
 ) = something_here

某事。

为了将来,请始终尝试正确管理您的括号。必要时计算它们。