Obtention de l'input la plus récente par groupe dans une instruction select

J'ai 3 tables à joindre pour get table1.code, table1.series, table2.entry_date, table3.title1 et j'essaye d'get le plus récent non3.table table3.title1 groupé par table1.code et table1.series.

select table1.code, table1.series, max(table2.entry_date), table3.Title1 from table3 INNER JOIN table2 ON table3.ID = table2.ID INNER JOIN table1 ON table2.source_code = table1.code where table3.Title1 is not NULL group by table1.code, table1.series, table3.Title1 

semble me donner toutes les inputs avec un titre1 non nul au lieu du plus récent. Comment dois-je structurer la requête pour choisir la dernière version de Title1 par code et série?

Essaye ça:

 select table1.code, table1.series, max(table2.entry_date), max(table3.Title1) as Title1 from table3 INNER JOIN table2 ON table3.ID = table2.ID INNER JOIN table1 ON table2.source_code = table1.code where table3.Title1 is not NULL And Table2.entry_Date = (Select Max(sq.entry_Date) From sq.table2 Where sq.id = table2.ID) group by table1.code, table1.series 

Peut-être quelque chose comme ça pour join seulement les inputs les plus récentes de la table2?

 SELECT table1.code, table1.series, table2.entry_date, table3.Title1 FROM table1 INNER JOIN table2 ON table2.source_code = table1.code AND table2.entry_date = ( SELECT MAX(maxtable2.entry_date) FROM table2 maxtable2 WHERE maxtable2.source_code = table2.source_code ) INNER JOIN table3 ON table3.ID = table2.ID 
 ;with tlb as ( select table1.code, table1.series, table2.entry_date, table3.Title1, row_number() over(code, series, entry_date order by code, series, entry_date desc) as rn from table3 INNER JOIN table2 ON table3.ID = table2.ID INNER JOIN table1 ON table2.source_code = table1.code where table3.Title1 is not NULL ) select * from tlb where rn = 1 

Cela peut être très rapide en fonction de vos index.