Tengo una tabla "programacionEtapas" que está formada tal que:
| id | etapa | fechaIni | fechaFin | createdOn |
de forma que cuando se reprograma una etapa, simplemente añado un nuevo registro, para guardar el histórico de reprogramaciones.
Luego, tengo una vista creada que muestra la fecha de inicio y fin de cada etapa, teniendo en cuenta la última programación (la actual) que se ha añadido para esa etapa, basándome en la mayor fecha del campo "createdOn".
Me da a mi que se puede simplificar bastante esta query, pero no acabo de dar con la fórmula para hacerlo.
Alguien me puede echar una mano?
Muchas gracias.
Saludos.
Código SQL:
Ver original
SELECT TOP 100 PERCENT pro.etapa, pro.fechaIni, pro.fechaFin FROM dbo.ProgramacionEtapas AS pro INNER JOIN (SELECT p.id FROM dbo.ProgramacionEtapas AS p INNER JOIN (SELECT TOP 100 PERCENT etapa, MAX(createdOn) AS createdOn FROM dbo.ProgramacionEtapas GROUP BY etapa) AS s ON p.etapa = s.etapa AND p.createdOn = s.createdOn GROUP BY p.id) AS pre ON pro.id = pre.id