日期:2014-05-17  浏览次数:20840 次

新手求帮助。
一个表table,字段:主键ID,员工id,养老金,医保费等等。

外键表:员工表

想实现的是,每次插入数据,都去查询对应的员工最近的养老金,医保费等等的数据。

比如100个员工,第一次插入数据,养老金什么的数据都还没有,那查出来肯定是空的,下一次插入相同员工的时候,就要查出来上一次养老金数据,就是查询出最近的数据。

怎么做不知道啊?求高手解答。

------解决方案--------------------
row_number() over
------解决方案--------------------
SQL code

create table t1 (id number(5),y_id number(5),y_my number(10,2),t_date date);

insert into t1 values (1,1,1000,date'2012-01-01');
insert into t1 values (2,2,2000,date'2012-01-01');
insert into t1 values (3,3,3000,date'2012-01-01');
insert into t1 values (4,1,1500,date'2012-02-01');
insert into t1 values (5,2,2500,date'2012-02-01');
insert into t1 values (6,3,3500,date'2012-02-01');
insert into t1 values (7,1,1100,date'2012-03-01');
insert into t1 values (8,3,2200,date'2012-03-01');
insert into t1 values (9,4,1000,date'2012-03-01');
commit;

--查询某个员工最后一次记录员
select *
from
(
  select *
  from t1
  where y_id = 1
  order by t_date desc
)
where rownum < 2  

--查询所有员工最后一次记录员
select tt.id,tt.y_id,tt.y_my,tt.t_date
from 
(
       select a.*,row_number() over(partition by y_id order by t_date desc) rn
       from t1 a
) tt
where rn = 1