Ver Mensaje Individual
  #4 (permalink)  
Antiguo 25/02/2011, 13:23
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: obtener valor maximo de una tabla

Hola libra:

A reserva de lo que comente luisef, autor del post, creo que hay un error en tu consulta. si checas hay dos registros para la carclave.

carclave noguia fec_reg destciur
c-223 00000123 12/02/2011 cancun
c-223 00000134 14/02/2011 iztapalapa

Según entendí, lo que que pretende es que se muestre el último de los registros entonces debería regresar el segundo de estos (que corresponde al noguia 0000134-iztapalapa)...

Igual y dejo el ejemplo en SQL Server para que le eches un vistazo. Además convendría que checaras el plan de ejecución para las consultas. Te darás cuenta que la consulta que propongo es mucho más eficiente que la que propones (aun sin definir llaves en la tabla):

Código SQL:
Ver original
  1. DECLARE @docdb TABLE (carclave VARCHAR(10), noguia VARCHAR(10), fec_reg datetime, destciur VARCHAR(50))
  2. INSERT INTO @docdb VALUES ('c-223', '00000123', '20110212', 'cancun')
  3. INSERT INTO @docdb VALUES ('c-45', '00000234', '20110216', 'tultitlan')
  4. INSERT INTO @docdb VALUES ('c-223', '00000134', '20110214', 'iztapalapa')
  5. SELECT * FROM @docdb
  6.  
  7. SELECT T1.* FROM @docdb T1 INNER JOIN
  8. (
  9. SELECT carclave, MAX(fec_reg) max_fecha_reg FROM @docdb GROUP BY carclave
  10. ) T2 ON T1.carclave = T2.carclave AND T1.fec_reg = T2.max_fecha_reg
  11.  
  12.  
  13. SELECT * FROM (
  14. SELECT
  15. ROW_NUMBER () OVER ( PARTITION BY t1.no_guia,t1.carclave ORDER BY t1.no_guia,t1.carclave ASC) AS RN,
  16. t1.no_guia,t1.carclave,t2.fec_reg,t2.destciur FROM (
  17. SELECT MAX(noguia) no_guia,carclave
  18. FROM @docdb
  19. GROUP BY carclave) t1 INNER JOIN (
  20. SELECT carclave,fec_reg,destciur FROM @docdb
  21. ) t2 ON (t1.carclave=t2.carclave)
  22. )t3 WHERE rn=1


Pero como te comento, esperemos que luisef haga los comentarios pertinentes

Saludos
Leo.