Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/12/2015, 13:29
Mewpher
 
Fecha de Ingreso: marzo-2008
Ubicación: Peru
Mensajes: 83
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Obtener los primeros Registros Agrupado

Hola a todos,

Pude darle una solución. La dejo aquí por si alguien más llegara a necesitar obtener información parecida. Lo que hice fue jugar con rownumber y max. Busco el máximo movimiento por cada código y su rownum, luego filtro a todo lo que sea el mismo código y menos e igual al rownum+1. Se puede adaptar para los N últimos movimientos de cada código.
Código SQL:
Ver original
  1. SELECT CODIGO, MOVIMIENTO
  2.   FROM (SELECT CODIGO, MOVIMIENTO, ROWNUM ROWNUMA
  3.           FROM (SELECT DISTINCT CODIGO, MOVIMIENTO
  4.                   FROM TABLA
  5.                  GROUP BY CODIGO, MOVIMIENTO
  6.                  ORDER BY CODIGO ASC, MOVIMIENTO DESC)) X
  7.  WHERE EXISTS (SELECT 1
  8.                  FROM (SELECT B.CODIGO, A.MOVIMIENTO, ROWNUME + 1 ROWNUME
  9.                          FROM (SELECT CODIGO, MOVIMIENTO, ROWNUM ROWNUME
  10.                                  FROM (SELECT DISTINCT CODIGO, MOVIMIENTO
  11.                                          FROM TABLA
  12.                                         GROUP BY CODIGO, MOVIMIENTO
  13.                                         ORDER BY CODIGO ASC, MOVIMIENTO DESC)) A
  14.                         INNER JOIN (SELECT CODIGO, MAX(MOVIMIENTO) MOVIMIENTO
  15.                                       FROM TABLA
  16.                                      GROUP BY CODIGO) B
  17.                            ON A.CODIGO = B.CODIGO
  18.                           AND A.MOVIMIENTO = B.MOVIMIENTO) Y
  19.                 WHERE X.CODIGO = Y.CODIGO
  20.                   AND X.ROWNUMA <= Y.ROWNUME);

Última edición por gnzsoloyo; 28/12/2015 a las 14:13