Récupération du dernier prix de facture dans SQL

Je sais que c'est simple pour la plupart d'entre vous!

J'ai une table Factures comme ça:

+-----------+------------+------+-------+ | InvoiceID | Date | Item | Price | +-----------+------------+------+-------+ | 1 | 15/04/2014 | A | 12 | | 2 | 20/04/2014 | A | 20 | | 3 | 20/04/2014 | A | 27 | | 4 | 20/04/2014 | B | 29 | | 5 | 28/04/2014 | C | 16 | | 6 | 28/04/2014 | B | 11 | +-----------+------------+------+-------+ 

Je voudrais récupérer le prix par rapport au dernier identifiant de facture pour chaque article, donc:

 +------+-----------+ | Item | LastPrice | +------+-----------+ | A | 27 | | B | 11 | | C | 16 | +------+-----------+ 

Quel est le moyen le plus efficace de le faire? J'utilise SQL Server 2008

Merci d'avance pour toute aide reçue.

 with cte as ( select *, row_number() over (partition by Item order by date desc) as r from dbo.YourTable ) select * from cte where r = 1 

Cela peut faire votre travail:

 SELECT Item, Price AS 'LastPrice' FROM MyTable WHERE InvoiceId IN (SELECT Max(InvoiceId) FROM MyTable GROUP BY Item)