none
Buscar dados de uma linha e da linha seguinte RRS feed

  • Pergunta

  • Como faço para buscar um valor de uma linha da tabela, e um valor de uma coluna diferente da linha seguinte.

    preciso encontrar uma faixa de valores disponíveis para serem inseridos.

    Ex

    Linha  Col1     Col2     Col3    ValIn   ValFin

    1         A            B          C        10       20

    2         A            B          C        40       50

    3         A            B          C        51       60

    Neste caso eu preciso pegar o ValFin da linha 1, com o valor ValIn da linha 2 e criar um novo intervalo 

     Col1     Col2     Col3    NovoValIn   NovoValFin

      A            B          C             20              40

    Assim, eu teria um intervalo de valores disponíveis entre 21 e 39...

    Alguma dica de como realizar esta operação???


    Marcos Paulo - Analista de Sistemas

    terça-feira, 25 de fevereiro de 2014 12:34

Respostas

  • Marcos,

    Fiz uma alteração no código do Gapimex, veja se é isso:

    Declare @Tabela table
    (Linha int, Col1 char(1), Col2 char(1), Col3 char(1), ValIn int, ValFin int);
    
    insert into @Tabela values
    (1, 'A', 'B', 'C', 10, 20),
    (2, 'A', 'B', 'C', 40, 50),
    (3, 'A', 'B', 'C', 51, 60);
    
    with CTE_Novo as
    (
        select
            t.Linha,
            t.Col1,
            t.Col2,
            t.Col3,
            a.ValFin as ValIn,
            t.ValIn as ValFin
        from @Tabela as t
        inner join @Tabela as a
            on a.Linha = t.Linha - 1
        where
            t.ValIn > a.ValFin
    )
    
    select * from @Tabela
    union 
    select * from CTE_Novo


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    • Marcado como Resposta Giovani Cr terça-feira, 4 de março de 2014 15:53
    terça-feira, 25 de fevereiro de 2014 17:57

Todas as Respostas

  • Deleted
    terça-feira, 25 de fevereiro de 2014 12:41
  • Bom dia,

    Marcos, experimente fazer um teste com o script abaixo:

    declare @Tabela table
    (Linha int, Col1 char(1), Col2 char(1), Col3 char(1), ValIn int, ValFin int);
    
    insert into @Tabela values
    (1, 'A', 'B', 'C', 10, 20),
    (2, 'A', 'B', 'C', 40, 50),
    (3, 'A', 'B', 'C', 51, 60);
    
    with CTE_Novo as
    (
        select
            t.Linha,
            t.Col1,
            t.Col2,
            t.Col3,
            a.ValFin + 1 as ValIn,
            t.ValIn - 1 as ValFin
        from @Tabela as t
        inner join @Tabela as a
            on a.Linha = t.Linha - 1
        where
            t.ValIn > a.ValFin + 1
    )
    
    select * from @Tabela
    union 
    select * from CTE_Novo

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    terça-feira, 25 de fevereiro de 2014 12:45
  • na verdade não é nem SQL server, e sim DB2, mas como DB2 eh mt limitado para foruns e o ambiente de desenvolvimento eh o C#, pensei q uma solução no SQL tbm poderia ajudar...

    mas desde já vlw pela sua colaboração


    Marcos Paulo - Analista de Sistemas

    terça-feira, 25 de fevereiro de 2014 12:50
  • Marcos,

    Fiz uma alteração no código do Gapimex, veja se é isso:

    Declare @Tabela table
    (Linha int, Col1 char(1), Col2 char(1), Col3 char(1), ValIn int, ValFin int);
    
    insert into @Tabela values
    (1, 'A', 'B', 'C', 10, 20),
    (2, 'A', 'B', 'C', 40, 50),
    (3, 'A', 'B', 'C', 51, 60);
    
    with CTE_Novo as
    (
        select
            t.Linha,
            t.Col1,
            t.Col2,
            t.Col3,
            a.ValFin as ValIn,
            t.ValIn as ValFin
        from @Tabela as t
        inner join @Tabela as a
            on a.Linha = t.Linha - 1
        where
            t.ValIn > a.ValFin
    )
    
    select * from @Tabela
    union 
    select * from CTE_Novo


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    • Marcado como Resposta Giovani Cr terça-feira, 4 de março de 2014 15:53
    terça-feira, 25 de fevereiro de 2014 17:57