Buscar intervalos de um determinado campo SQL

08/01/2020

0

Boa tarde, estou tentando montar um select sql simples, para buscar intervalos de um campo de uma tabela.
Tenho o seguinte campo com os seguintes dados abaixo:

NUMERO_DE_SERIE
------------------
30
31
32
33
34
35
36
A50
A51
A52
A53
B90
C1000,
D400,
M5001
M5002
M5003
M5004

Preciso trazer os dados que sejam sequenciais, de 1 em 1, quando não for, trazer separado como a seguir:
RETORNO_INTERVALOS_NUM_SERIE
------------------
30____36
A50_____A53
B90
C1000
D400
M5001_____M5004
Mauricio Espido

Mauricio Espido

Responder

Post mais votado

08/01/2020

Boa tarde, estou tentando montar um select sql simples, para buscar intervalos de um campo de uma tabela.
Tenho o seguinte campo com os seguintes dados abaixo:

NUMERO_DE_SERIE
------------------
30
31
32
33
34
35
36
A50
A51
A52
A53
B90
C1000,
D400,
M5001
M5002
M5003
M5004

Preciso trazer os dados que sejam sequenciais, de 1 em 1, quando não for, trazer separado como a seguir:
RETORNO_INTERVALOS_NUM_SERIE
------------------
30____36
A50_____A53
B90
C1000
D400
M5001_____M5004


Acho que com SQL puro você não consegue o seu intento. Você simplesmente tem que trazer todos os registros em ordem numérica e fazer algum tratamento procedural em um loop, onde para cada elemento lido você vai ver se o seguinte é sequencial e atẽ quando tem essa continuidade e imprimir do jeito que você quer.

SELECT NUMERO_DE_SERIE FROM <tabela>
ORDER BY NUMERO_DE_SERIE
// loop trantando os elementos trazidos em ordem

Fernando Junior

Fernando Junior
Responder

Mais Posts

09/01/2020

Mauricio Espido

Acho que vou ter que achar um jeito de classificar todos os sequenciais e então vou conseguir fazer um first e last value em cada bloco separado. E obrigado pela resposta.
Responder

15/01/2020

Anderson Gonçalves

Fala boy seguinte...

Se você quer intervalo faça:

With ADOQuery do
begin
close;
sql.clear;
sql.add('select * from tabela');
sql.add('where campo between :ini and :fim');
parameters.parambyname('ini').value := Edit1.Text;
parameters.parambyname('fim').value := Edit2.text;
open;
end;

Espero ter ajudado.
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar