Último precio compra año:

 

CREATE VIEW Ultimo_Precio_Compra_Articulo_Año
AS
WITH Datos (ID,IdArticulo,Año,FechaFactura,Precio)
AS (SELECT ROW_NUMBER() OVER (PARTITION BY YEAR(f.FechaFact),l.IdArticulo ORDER BY YEAR(f.FechaFact), L.IdArticulo), L.IdArticulo, YEAR(F.FechaFact), L.FechaFactura, L.Precio_EURO
FROM Pedidos_Prov_Lineas L INNER JOIN Facturas_Prov_Cab F ON F.IdFactura=L.IdFactura)
,Maximos (ID,IdArticulo,Año)
AS (SELECT MAX(ID), IdArticulo, Año FROM Datos GROUP BY IdArticulo,Año)
SELECT D.IdArticulo,D.Año,D.FechaFactura,D.Precio
FROM Datos D INNER JOIN Maximos M ON D.ID=M.ID AND D.IdArticulo=M.IdArticulo AND D.Año=M.Año
go
SELECT * FROM Ultimo_Precio_Compra_Articulo_Año