Usuário com melhor resposta
Buscar dados de uma linha e da linha seguinte

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
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
Todas as Respostas
-
-
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
-
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
-
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