| Query the newest records [message #634736] |
Sat, 14 March 2015 05:04  |
 |
zhaoquer
Messages: 35 Registered: October 2013
|
Member |
|
|
I want to query the newest record according to the pid.
Datas in the table:
id name pid date
1 n1 001 2015-03-12 10:00
2 n1 001 2015-03-12 11:00
3 n1 002 2015-03-12 10:00
4 n1 002 2015-03-12 11:00
Expected Result:
id name pid date
2 n1 001 2015-03-12 11:00
4 n1 002 2015-03-12 11:00
Please give me a advise , thanks in advance.
|
|
|
|
|
|
| Re: Query the newest records [message #634739 is a reply to message #634738] |
Sat, 14 March 2015 05:47   |
 |
zhaoquer
Messages: 35 Registered: October 2013
|
Member |
|
|
Michel, thanks a lot.That solve my problem.
create table tab0314(
id varchar2(10),
name varchar2(20),
pid varchar2(10),
operDate date
);
insert into tab0314 values ('1','n1','001',to_date('2015/03/12 10:00:00','yyyy-mm-dd hh24:mi:ss'));
insert into tab0314 values ('2','n1','001',to_date('2015/03/12 11:00:00','yyyy-mm-dd hh24:mi:ss'));
insert into tab0314 values ('3','n1','002',to_date('2015/03/12 10:00:00','yyyy-mm-dd hh24:mi:ss'));
insert into tab0314 values ('4','n1','002',to_date('2015/03/12 11:00:00','yyyy-mm-dd hh24:mi:ss'));
commit;
with
data as (
select id,name, pid,operDate,
rank () over (partition by pid order by operDate desc) rk
from tab0314
)
select id,name, pid,operDate
from data
where rk = 1
order by 1, 2;
|
|
|
|
|
|