您可以按ID_PENGIRIM 进行分区,按TANGGAL_PESAN 对分区进行排序,给出排名并过滤排名为1 的结果
select * from (
select
p.*,
row_number() over (partition by id_pengirim order by tanggal_pesan desc nulls last) as rank
from pesan p
) where rank = 1
结果
| ID_PESAN | ID_ANGGOTA | ID_PENGIRIM | ISI_PESAN | TANGGAL_PESAN | RANK |
|----------|------------|-------------|-----------|-----------------------|------|
| 1 | 1 | 1 | a | 2017-12-29 07:32:52.0 | 1 |
| 4 | 1 | 2 | d | 2017-12-28 07:32:52.0 | 1 |
ddl
create table PESAN (
id_pesan varchar2(15),
id_anggota varchar2(15),
id_pengirim varchar2(15),
isi_pesan varchar2(15),
tanggal_pesan timestamp
);
dml
insert into PESAN values ('1','1','1','a',sysdate-1);
insert into PESAN values ('2','1','2','b',sysdate-4);
insert into PESAN values ('3','1','1','c',sysdate-3);
insert into PESAN values ('4','1','2','d',sysdate-2);