Nadal nie ma informacji jakiej bazy dotyczy problem.
Możesz to na dwa sposoby (może i więcej) rozwiązać:
- użyć max na dacie operacji per klient
- użyć jakiejś ranking function (w wielu systemach bazodanowych takie są)
add.1.
select * from klientci K
left join
(
select O.* from
(select id_klienta, max(data_operacji) as MaxDT from operacje) as MD
inner join operacje O on MD.id_klienta = O.id_klienta and MD.MaxDT = O.data_operacji
) as O on K.id_klienta = O.id_klienta
wady: jeśli dla danego klienta są więcej niż jedna operacja o dokładnie tej samej dacie, to będzie powodowało błędy
add.2.
select * from klientci K
left join
(
select * from (select row_number() over(partition by id_klienta order by data_operacji desc) as RN, * from operacje) as O where RN=1
) as O on K.id_klienta = O.id_klienta