Buscar intervalos de um determinado campo SQL
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:
Preciso trazer os dados que sejam sequenciais, de 1 em 1, quando não for, trazer separado como a seguir:
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
Curtidas 0
Melhor post
Fernando Junior
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:
Preciso trazer os dados que sejam sequenciais, de 1 em 1, quando não for, trazer separado como a seguir:
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
GOSTEI 1
Mais Respostas
Mauricio Espido
08/01/2020
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.
GOSTEI 0
Anderson Gonçalves
08/01/2020
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.
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.
GOSTEI 0