table emp_history
{employee_code -->pk
job_start_date -->pk
job_end_date -->pk
job_code}select employee , job_code
from emp_history
where to_date('01-JAN-2003','DD-MON-YYYY')
between job_start_date and job_end_date

解决方案 »

  1.   

    不好意思,没有说清楚,现在这个表格已经存在了,问题是需要用sql把过去某个时间点上的员工的职位列出来。张三 助理 2000/02/01
    张三 经理 2002/08/10
    张三 总经理 2003/02/01
    李四 销售员 1998/10/10
    李四 经理 2002/01/20要取出2002/10/10这个时候的张三和李四的职位。该怎么做??
      

  2.   

    别着急,有办法:-)
    select name , job 
    from yourtable
    where (name , jobdate) in (select name , max(jobdate) maxdate
    from yourtable
    where jobstartdate < to_date('10-OCT-2002','DD-MON-YYYY'))
      

  3.   

    sorry , small mistakeselect name , job 
    from yourtable
    where (name , jobdate) in (select name , max(jobdate) maxdate
    from yourtable
    where jobstartdate < to_date('10-OCT-2002','DD-MON-YYYY')
    group by name 
    )
      

  4.   

    sorry , mistake above
    select name , job 
    from yourtable
    where (name , jobdate) in (select name , max(jobdate) maxdate
    from yourtable
    where jobstartdate < to_date('10-OCT-2002','DD-MON-YYYY')
    group by name   /*it is must */
    )