如何创建条件 SQL 查询

How do I create a conditional SQL query

我正在尝试使用 IF/Else 语句创建 Oracle Sql 查询

IF EXISTS 
  ( 
         SELECT * 
         FROM   baninst1.an_employee_position 
         WHERE  baninst1.an_employee_position.person_uid = 593791 
         AND    baninst1.an_employee_position.position_end_date IS NULL) THEN 
  SELECT * 
  FROM   baninst1.an_employee_position 
  WHERE  baninst1.an_employee_position.person_uid = 593791 
  AND    ( 
                baninst1.an_employee_position.position_end_date IS NULL 
         OR     baninst1.an_employee_position.position_end_date > SYSDATE) 
  AND    baninst1.an_employee_position.effective_start_date <= SYSDATE;ELSE 
  SELECT * 
  FROM   ( 
                SELECT * 
                FROM   baninst1.an_employee_position 
                WHERE  baninst1.an_employee_position.person_uid = 593791 ) 
  WHERE  ROWNUM = 1;END IF;

但是当我 运行 时收到 "Unknown Command" 错误。没有更多错误信息

这可能会提供您正在寻找的内容:

SELECT a.* 
 FROM employee_position a
where person_uid = 593791
and (
      (a.position_end_date is null)
      or
      (
        a.position_end_date =
        (select max(position_end_date)
         from employee_position b
          where b.person_uid = a.person_uid
          and b.position_end_date is not null
        )
      )
    )

另一种方式

SELECT a.* 
 FROM employee_position a
where person_uid = 593791
and (
      nvl(a.position_end_date, trunc(sysdate+100)) >= 
      (select max(position_end_date)
       from employee_position b
       where b.person_uid = a.person_uid
       and b.position_end_date is not null
      )
    )