SQL Server,
Suponiendo que tenemos varios movimientos registrados por folio, en el entendido que un folio puede tener varios movimientos, por ejemplo en una biblioteca Un Libro se presta muchas veces en el dia.
El requerimiento es obtener el último movimiento registrado por cada Libro, bueno de eso trata este tema.
SELECT
*
FROM tblMovimientos
INNER JOIN
(
SELECT
id = MAX(idMov)
FROM tblMovimientos IDS
GROUP BY idLibro
) IDS
ON IDS.id = tblMovimientos .idMov
ORDER BY idLibro
Primeramente hacemos un SELECT anidado con el alias IDS donde en efecto traeremos id Mas actual agrupado por libro con la función MAX porque el id de los movimientos es único e incremental
Después en el SELECT principal hacemos un cruce con todos los ids encontrados con el INNER JOIN para que traiga únicamente los datos que coincidan con dicho cruce y los demás los descarte y como un plus se ordenan por id de libro.
En este ejemplo utilicé SELECT * FROM (*Asterisco) solo con fines didácticos porque en la practica recomiendo encarecidamente que NO lo utilicen, mejor especifiquen los campos que desean mostrar en el SELECT, salvo por ejemplo en un SELECT COUNT(*) FROM si es que lo requieren.
Saludos.
No hay comentarios:
Publicar un comentario