none
SERIE NUMERICA - ENCONTRAR SALTO CORRELATIVO RRS feed

  • Pregunta

  • Estimados:

                     Tengo un problema que necesito resolver. Tengo una tabla con los siguientes campos

     

    local  tipodoc numdoc      fecha   

    1        F          55        01/09/2007

    1        F          56        01/09/2007

    1        F          58        01/09/2007

    1        F          60        01/09/2007

     

    Necesito crear una instrucción SQL ,en que para una fecha determinada, busque una secuencia de números y cuando exista un salto de correlativo lo muestre, para este caso sería más o menos así.

     

    1        F          57

    1        F          59

     

     

    Estimados señores del foro rogaríua a Uds. responder a este enigma, desde antemano gracias por su cooperación
    • Cambiado Gustavo Larriera viernes, 25 de junio de 2010 16:49 +Adecuado. (De:SQL Server)
    viernes, 14 de septiembre de 2007 5:21

Respuestas

  • Yo lo plantearía del siguiente modo:

     

    Me crearía una tabla auxiliar que podemos bautizar como PATRON, en la que definiria un campo "numdoc", y entraría tantos valores correlativos como sea neecsario para alcanzar el valor máximo estimado a validar.

     

    Tabla PATRON

    NumDoc

    1

    2

    3

    ...

    n

     

    Esta tabla se podría generar al "vuelo" pero me temo que su impacto en el rendimiento no aconseja esta opción. Ni que decir que programar un buen bucle que nos haga el trabajo sucio viene que ni pintado...

    Code Snippet

     

    DECLARE @counter int

    SET @counter = 1

    WHILE @counter < 100

    BEGIN

    INSERT INTO PATRON VALUES(@counter)

    SET @counter = @counter + 1

    END

    GO

     

     

    Ahora apoyándonos en la tabla PATRON podemos determinar que elementos no cumplen con la serie especificada en dicha tabla:

     

    Code Snippet

    SELECT PATRON.NumDoc

    FROM PATRON left outer JOIN

    Table1 ON PATRON.NumDoc = Table1.NumDoc where Table1.NumDoc is NULL order by PATRON.NumDoc

     

     

     

     

    Bueno... creo que debería funcionar.

     

    Espero que te sirva de ayuda.

    Salud y suerte!

    viernes, 14 de septiembre de 2007 7:18

Todas las respuestas

  • Yo lo plantearía del siguiente modo:

     

    Me crearía una tabla auxiliar que podemos bautizar como PATRON, en la que definiria un campo "numdoc", y entraría tantos valores correlativos como sea neecsario para alcanzar el valor máximo estimado a validar.

     

    Tabla PATRON

    NumDoc

    1

    2

    3

    ...

    n

     

    Esta tabla se podría generar al "vuelo" pero me temo que su impacto en el rendimiento no aconseja esta opción. Ni que decir que programar un buen bucle que nos haga el trabajo sucio viene que ni pintado...

    Code Snippet

     

    DECLARE @counter int

    SET @counter = 1

    WHILE @counter < 100

    BEGIN

    INSERT INTO PATRON VALUES(@counter)

    SET @counter = @counter + 1

    END

    GO

     

     

    Ahora apoyándonos en la tabla PATRON podemos determinar que elementos no cumplen con la serie especificada en dicha tabla:

     

    Code Snippet

    SELECT PATRON.NumDoc

    FROM PATRON left outer JOIN

    Table1 ON PATRON.NumDoc = Table1.NumDoc where Table1.NumDoc is NULL order by PATRON.NumDoc

     

     

     

     

    Bueno... creo que debería funcionar.

     

    Espero que te sirva de ayuda.

    Salud y suerte!

    viernes, 14 de septiembre de 2007 7:18
  • Estimado Toni:

                         Como podría hacer esto sin tener que crear una tabla?, ya que uso plsql y solo quiero instruir por medio de una consulta que haga lo que necesito es listar todos los saltos de correlativo.

     

     

    select numdoc

       from ventas

       where ......

     

     

    saludos y gracias

    viernes, 14 de septiembre de 2007 15:36
  •  

    Pedro

     

    Estas en un foro de MSSQLSERVER (SQL SERVER DE MICROSOFT).

     

    Saludos

    viernes, 14 de septiembre de 2007 16:56