Interesante el comentario de Andres95.
Hay una tercer forma de obtener este mismo resultado. hace algún tiempo tuve la oportunidad de probarlo en MySQL y resultó ser el más eficiente de los tres, sería interesante que Andres95 lo repitiera en el equipo donde hizo las pruebas anteriores para ver si también en SQL server resulta o no más eficiente que EXISTS e IN. La consulta utiliza un INNER JOIN:
Código SQL:
Ver originalDECLARE @Tabla TABLE (ID INT, Folio INT, Precio1 NUMERIC(8,2));
INSERT INTO @tabla VALUES (1, 558, 390.00);
INSERT INTO @tabla VALUES (2, 392, 300.00);
INSERT INTO @tabla VALUES (3, 558, 400.00);
INSERT INTO @tabla VALUES (4, 190, 210.00);
INSERT INTO @tabla VALUES (5, 190, 300.00);
INSERT INTO @tabla VALUES (6, 392, 280.00);
SELECT T1.id, T1.folio, T1.Precio1 FROM @Tabla T1 INNER JOIN
(SELECT folio, MAX(id) max_id FROM @tabla GROUP BY folio) T2
ON T1.id = T2.max_id AND T1.folio = T2.folio
ORDER BY T1.id
Faltaría el tema de los índices, por eso le pido de favor a Andres95 que pruebe bajo las mismas condiciones las tres consultas.
Saludos
Leo.