1

我有以下内容:

 select nvl ( 
     (select 1
      from tableA, tableB 
      where tableA.id(+) = 9999
      and tableB.project_id(+) = tableA.project_id
      and sysdate - tableA.start_date < 120), 0) as myFlag from dual;

我正在尝试查看项目开始日期是否小于 120。上面的查询有效,但有更好的方法吗?就像案例陈述一样?

4

2 回答 2

2
select 
  case 
      when sysdate-tableA.start_date < 120 then 1
      else 0
  end myFlag
from tableA, tableB 
where tableA.id(+) = 9999
and tableB.project_id(+) = tableA.project_id
于 2011-04-05T16:48:13.103 回答
0

你为什么要加入表 B?你就不能这样做吗?

SELECT CASE WHEN ID IS NULL THEN 0 ELSE 1 END
FROM TableA 
WHERE sysdate - TableA.start_date < 120 and TableA.id = 9999;
于 2011-04-05T16:52:35.910 回答