Página 1 de 1
Quebra de sequencia
Enviado: 07 Mar 2017 17:24
por janio
Ola a todos,
Tenho uma tabela com numeros sequenciais e preciso saber se houve quebra nessa sequencia e quais numeros estao faltando, tipo:
Que Query poderia mim retonar informando que o numero
4 esta faltando na sequencia?
Quebra de sequencia
Enviado: 07 Mar 2017 18:08
por fladimir
Veja se te ajuda
Código: Selecionar todos
select a.id -1 from tabela a.id <> 1 and not exists (select id from tabela b where b.id = (a.id-1) )
Quebra de sequencia
Enviado: 07 Mar 2017 19:07
por janio
Cara, esses comandos sao tao loucos (pra mim) q nao estou nem sabendo montar aqui com os meus dados kkkkk
Vou passar os dados pra ver se consegue montar a query pra mim.
Tabela : a03ped
campo : numccf
preciso saber se ha quebra de sequencia nesse campo (numccf)
Quebra de sequencia
Enviado: 07 Mar 2017 19:27
por alxsts
Olá!
O artigo
How to find missing values in a sequence with SQL é bem interessante, apesar de ser antigo.
(No exemplo do Fladimir falta a cláusula WHERE)
How to find missing values insequence with
SQL
Quebra de sequencia
Enviado: 07 Mar 2017 20:01
por fladimir
Exato Alexandre
Copiei e colei e passou desapercebido,
Agora pegando a necessidade do colega com o exemplo do Alexandre segue código de teste montado.
Código: Selecionar todos
create table a03ped ( NumCCF int not null primary key );
insert into a03ped (NumCCF) values (1), (2), (3), (5), (6), (7);
select start, stop from (
select m.NumCCF + 1 as start,
(select min(NumCCF) - 1 from a03ped as x where x.NumCCF > m.NumCCF) as stop
from a03ped as m
left outer join a03ped as r on m.NumCCF = r.NumCCF - 1
where r.NumCCF is null
) as x
where stop is not null;
Quebra de sequencia
Enviado: 07 Mar 2017 20:53
por janio
Eita lasqueira,
Isso tudo so pra saber que o
4 ta faltando?
kkk
Ver aqui no meu codigo o que acontece...
Quebra de sequencia
Enviado: 08 Mar 2017 09:46
por Poka
Olá
Como não vi como fazer direto em sql, tenho uma função, que resolve , veja se ajuda
Código: Selecionar todos
stat func FverPulado(xtabela,xcampo)
/*
exemplo de chamada
nomeMatrizRetorno:=FverPulado( "cadcli","codigo")
verifica se tem numeracao pulado na tabela
retorna matriz com os numeros pulados
fb_executa é a minha rotina para executar o str, veja a sua
m_select ´e oretorno da minha funcao f_executa()
uso strzero e val , porque os meus codigo sao sempre completos , exe 000001
*/
local xmin,xmax , m_pulados:={} , a
Str:="select Min("+xcampo+"),Max( "+xcampo+") from "+xtabela+";" // vefifico a faixa de pesquisa
fb_executa() // -é a minha rotina que executa o str e retorna matriz m_select, verifique a sua
xmin:=m_select[1,1]
xmax:= m_select[1,2]
for a:= val(xmin) to val(xmax)
// strzero, porque só trablho com numeros completos do tipo "00001"
str:="select first 1 "+xcampo+" from "+xtabela + " where "+xcampo+" = '"+ strzero(a,len(xmin)) +"';"
fb_executa()
if empty( m_select)
aadd(m_pulados,strzero(a,len(xmin) ) )
endif
next
msginfo( str(len(m_pulados),5) +" registros pulados")
retu m_pulados
Poka