Hola nuevamente, gracias por el apoyo brindado pude obtener lo que queria con funcion de ventana, pero esto mismo necesito aplicar pero a otro caso.
Tengo una tabla con una estructura similar a esto: | COD_PER | COD_INSC | FEC_INICIAL | FEC_FINAL | | 011650 | 0054010 | 16/01/2015 | 16/01/2015 | | 011650 | 0054010 | 01/01/2015 | 16/01/2015 | | 011650 | 0054010 | 01/10/2014 | 01/01/2015 | | 011650 | 0054010 | 01/07/2014 | 01/10/2014 | | 011650 | 0054010 | 01/04/2014 | 01/07/2014 | | 011650 | 0054010 | 01/02/2014 | 01/04/2014 | | 011650 | 0054010 | 01/01/2014 | 01/02/2014 | | 011650 | 0054010 | 01/10/2013 | 01/01/2014 | | 011650 | 0054010 | 17/07/2013 | 01/10/2013 | Utilice: LEAD(S.FEC_FIN) OVER (ORDER BY S.COD_PER ASC, S.FEC_FIN DESC) AS FEC_FINAL, NVL(ABS(S.FEC_INI - LEAD(S.FEC_FIN) OVER (ORDER BY S.COD_PER ASC, S.NRO DESC)), 0) AS DIAS, ROW_NUMBER() OVER (PARTITION BY S.COD_PER ORDER BY S.COD_PER ASC, S.COD_INSC DESC) AS ITEM Y obtuve esto: | COD_PER | COD_INSC | FEC_INICIAL | FEC_FINAL | DIAS | ITEM | | 011650 | 0054010 | 16/01/2015 | 16/01/2015 | 0 | 1 | | 011650 | 0054010 | 01/01/2015 | 01/01/2015 | 0 | 2 | | 011650 | 0054010 | 01/10/2014 | 01/10/2014 | 0 | 3 | | 011650 | 0054010 | 01/07/2014 | 01/07/2014 | 0 | 4 | | 011650 | 0054010 | 01/04/2014 | 01/04/2014 | 0 | 5 | | 011650 | 0054010 | 01/02/2014 | 01/02/2014 | 0 | 6 | | 011650 | 0054010 | 01/01/2014 | 01/01/2014 | 0 | 7 | | 011650 | 0054010 | 01/10/2013 | 01/10/2013 | 0 | 8 | | 011650 | 0054010 | 17/07/2013 | | 0 | 9 | Las pruebas solo las hice con el COD_PER 011650, pero cuando quiero de todos los codigos pues observe lo siguiente: | COD_PER | COD_INSC | FEC_INICIAL | FEC_FINAL | DIAS | ITEM | | 011650 | 0054010 | 16/01/2015 | 16/01/2015 | 0 | 1 | | 011650 | 0054010 | 01/01/2015 | 01/01/2015 | 0 | 2 | | 011650 | 0054010 | 01/10/2014 | 01/10/2014 | 0 | 3 | | 011650 | 0054010 | 01/07/2014 | 01/07/2014 | 0 | 4 | | 011650 | 0054010 | 01/04/2014 | 01/04/2014 | 0 | 5 | | 011650 | 0054010 | 01/02/2014 | 01/02/2014 | 0 | 6 | | 011650 | 0054010 | 01/01/2014 | 01/01/2014 | 0 | 7 | | 011650 | 0054010 | 01/10/2013 | 01/10/2013 | 0 | 8 | | 011650 | 0054010 | 17/07/2013 | 31/10/2015 | 836 | 9 | | 011658 | 0072885 | 31/10/2015 | 31/10/2015 | 0 | 1 | | 011658 | 0072885 | 01/10/2015 | 01/10/2015 | 0 | 2 | | 011658 | 0072885 | 01/09/2015 | 01/09/2015 | 0 | 3 | | 011658 | 0072885 | 01/07/2015 | 01/07/2015 | 0 | 4 | | 011658 | 0072885 | 01/06/2015 | 01/06/2015 | 0 | 5 | | 011658 | 0072885 | 01/05/2015 | 01/05/2015 | 0 | 6 | Que en el siguiente registro se esta restando FEC_FINAL del COD_PER 011658 con FEC_INICIAL del COD_PER 011650, lo cual no debe ser: | 011650 | 0054010 | 17/07/2013 | 31/10/2015 | 836 | 9 | Hay forma de que por cada codigo la ultima FEC_INICIAL quede vacia por cada COD_PER Y solo reste las fechas FEC_INICIAL y FEC_FINAL por cada COD_PER y quede algo asi: | 011650 | 0054010 | 01/01/2014 | 01/01/2014 | 0 | 7 | | 011650 | 0054010 | 01/10/2013 | 01/10/2013 | 0 | 8 | | 011650 | 0054010 | 17/07/2013 | | 0 | 9 | | 011658 | 0072885 | 31/10/2015 | 31/10/2015 | 0 | 1 | | 011658 | 0072885 | 01/10/2015 | 01/10/2015 | 0 | 2 | | 011658 | 0072885 | 01/09/2015 | 01/09/2015 | 0 | 3 | Gracias por su ayuda. El lun., 18 abr. 2016 a las 21:33, mauricio pullabuestan (< jmaurici...@yahoo.es>) escribió: > Hola Alberto. > > > Como dice Hellmuth usa funciones de ventana, es lo mejor. > > Puse el ejemplo de Hellmuth en este link http://sqlfiddle.com/#!15/71cbd/1 > > Espero no se moleste. > Saludos. > > Mauricio. >