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 originalCREATE TABLE #temp
(
seq_formulario INT,
numacto INT,
fchActo datetime
)
INSERT INTO #temp VALUES (1,18,'2010-07-22')
INSERT INTO #temp VALUES (1,4,'2015-05-29')
INSERT INTO #temp VALUES (1,22,'2009-06-30')
INSERT INTO #temp VALUES (2,3,'2015-01-28')
INSERT INTO #temp VALUES (2,5,'2009-06-30')
INSERT INTO #temp VALUES (3,8,'2014-07-14')
INSERT INTO #temp VALUES (3,16,'2014-07-14')
INSERT INTO #temp VALUES (3,30,'2014-07-14')
SELECT seq_formulario, MAX(numacto) AS num, MAX(fchActo) AS fecha FROM(
SELECT t1.* FROM #temp AS t1
INNER JOIN (SELECT seq_formulario, MAX(fchActo) fecha FROM #temp GROUP BY seq_formulario
) AS t2 ON (t1.seq_formulario=t2.seq_formulario AND t1.fchActo=t2.fecha)
WHERE t2.seq_formulario IS NOT NULL
) AS completa GROUP BY seq_formulario
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)