Ejemplo: numerar ventas por cliente (más reciente primero)
SELECT v.*,
ROW_NUMBER() OVER (PARTITION BY v.id_cliente ORDER BY v.fecha DESC) AS rn
FROM ventas v;
ROW_NUMBER genera un número de fila según un orden. Perfecto para “Top por grupo”.
SELECT v.*,
ROW_NUMBER() OVER (PARTITION BY v.id_cliente ORDER BY v.fecha DESC) AS rn
FROM ventas v;
WITH x AS (
SELECT v.*,
ROW_NUMBER() OVER (PARTITION BY v.id_cliente ORDER BY v.fecha DESC) AS rn
FROM ventas v
)
SELECT *
FROM x
WHERE rn = 1;