Réponse acceptée !
Salut,
-- Exemple :
-- on a le client '100' avec les devis 1 et 2 (le 2 est le plus récent)
-- et le client '200' avec les devis 3, 4 et 5 (le 4 est le plus récent)
declare @devis table
(
id_devis int, id_client int, date_devis datetime, montant money
)
insert into @devis values(1,100,'30/12/2007', 100.00)
insert into @devis values(2,100,'28/01/2008', 150.10) --> le + récent
insert into @devis values(3,200,'01/01/2008', 110.00)
insert into @devis values(4,200,'29/01/2008', 105.10) --> le + récent
insert into @devis values(5,200,'01/01/2006', 10.00)
-- on fait une jointure sur le regroupement intéressant (ID_CLIENT, DATE_DEVIS)
-- et TOUS les champs (pour pouvoir tout afficher et pas que l'id client et la date)
select affiche.id_devis,
affiche.id_client,
convert(varchar,affiche.date_devis,103) as 'date_devis',
affiche.montant
from @devis affiche
join (select regroup.id_client, max(regroup.date_devis) as 'date_devis'
from @devis regroup
group by regroup.id_client) ref
on affiche.id_client = ref.id_client and affiche.date_devis = ref.date_devis
order by affiche.id_client
-- Résultat !
2 100 28/01/2008 150.1000
4 200 29/01/2008 105.1000