Ver Mensaje Individual
  #5 (permalink)  
Antiguo 19/01/2012, 14:45
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: obtener ID mayor y otras columnas en una tabla historica

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 original
  1. DECLARE @Tabla TABLE (ID INT, Folio INT, Precio1 NUMERIC(8,2));
  2. INSERT INTO @tabla VALUES (1, 558, 390.00);
  3. INSERT INTO @tabla VALUES (2, 392, 300.00);
  4. INSERT INTO @tabla VALUES (3, 558, 400.00);
  5. INSERT INTO @tabla VALUES (4, 190, 210.00);
  6. INSERT INTO @tabla VALUES (5, 190, 300.00);
  7. INSERT INTO @tabla VALUES (6, 392, 280.00);
  8.  
  9. SELECT T1.id, T1.folio, T1.Precio1 FROM @Tabla T1 INNER JOIN
  10. (SELECT folio, MAX(id) max_id FROM @tabla GROUP BY folio) T2
  11. ON T1.id = T2.max_id AND T1.folio = T2.folio
  12. 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.