有两张表,第一张为emp_create(empid,empname,createtime),第二张为emp_modify(empid,modifytime)
现要传递一个empid和一个时间参数time进行筛选查询,首先跟第二张表emp_modify中的empid,modifytime比较,如果empid存在且modifytime<time则select empname,modifytime,如果表emp_modify没有该empid的记录或者有该empid的记录但modifytime>=time,则 select 第一张表的empname,createtime请问这个select语句该怎么写?谢谢!

解决方案 »

  1.   

    create or replace procedure( aempid varchar2(10),atime date,rst out sys_refcursor )
    is
      i int;
    begin
      select count(*) into i
      from emp_modify where empid=fempid and modifytime<time;
      if i>0 then
        open rst for select empname,modifytime  from emp_modify where empid=aempid and modifytime<atime;
      else
        open rst for select empname,createtime from emp_create where .........
      end if;end;
      

  2.   

    select ec.empname,
           nvl(decode(sign(&time-modifytime),1,em.modifytime,ec.createtime),ec.createtime) getTime
      from emp_create ec,
           emp_modify em
     where em.empid = &empid(+)
       and ec.empid = &empid(+);
      

  3.   

    用存储过程,进行条件判断。写不同的SQL语句