Ver Mensaje Individual
  #5 (permalink)  
Antiguo 07/04/2016, 08:34
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Consulta Devolver máximo registro (Llave compuesta)

Ok no revise la parte donde dices que si hay mas de un registro en la misma fecha tome en cuenta el numero maximo de la otra columna, bueno para ese caso solamente agregamos un max al query que ya teniamos y listo ;)


Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. seq_formulario INT,
  4. numacto INT,
  5. fchActo datetime
  6. )
  7.  
  8.  
  9. INSERT INTO #temp VALUES (1,18,'2010-07-22')
  10. INSERT INTO #temp VALUES (1,4,'2015-05-29')
  11. INSERT INTO #temp VALUES (1,22,'2009-06-30')
  12. INSERT INTO #temp VALUES (2,3,'2015-01-28')
  13. INSERT INTO #temp VALUES (2,5,'2009-06-30')
  14. INSERT INTO #temp VALUES (3,8,'2014-07-14')
  15. INSERT INTO #temp VALUES (3,16,'2014-07-14')
  16. INSERT INTO #temp VALUES (3,30,'2014-07-14')
  17.  
  18.  
  19. SELECT seq_formulario, MAX(numacto) AS num, MAX(fchActo) AS fecha FROM(
  20. SELECT t1.* FROM #temp AS t1
  21. INNER JOIN (SELECT seq_formulario, MAX(fchActo) fecha FROM #temp GROUP BY seq_formulario
  22. ) AS t2 ON (t1.seq_formulario=t2.seq_formulario AND t1.fchActo=t2.fecha)
  23. WHERE t2.seq_formulario IS NOT NULL
  24. ) AS completa GROUP BY seq_formulario
  25. ORDER BY seq_formulario ASC

Resultado:
seq_formulario num fecha
1 4 2015-05-29 00:00:00.000
2 3 2015-01-28 00:00:00.000
3 30 2014-07-14 00:00:00.000

Como ves tengo 3 campos con la misma fecha para el seq 3 entonces nada mas presenta el que tiene el num mas grande en este caso de ejemplo el 30 :)

ZedGe1505, el ejemplo que pones tambien funciona pero es mas eficiente usar un join en lugar de la concatenacion con el IN(si te fijas el post es del 2011 me faltaba un poco de practica y experiencia ;) jejejejeje)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me