SQL para retornar valores dentro de um intervalo

18/07/2011

0

Olá Pessoal. Estou com um problema aqui na empresa que trabalho que ta me tirando o sono, é o seguinte, eu uso aqui banco de dados SQL SERVER, e estou precisando de uma consulta SQL que retorne os valores não encontrados em uma tabela dentro de um intervalo, veja abaixo o exemplo da tabela que tenho: ID | LOTE | ARTIGO | LOCAL | 1 123 AAAA A001 2 234 AAAA A002 3 345 BBBB A003 4 654 CCCC A005 5 987 BBBB A007 Pois bem, preciso de uma SQL que me retorne os valores não encontrados em um intervalo na coluna LOCAL eu sei que o intervalo vai de “A001 ate A010”, logo executando uma SQL na tabela acima eu preciso ter os valores = A004, A006, A008, A009, A010. Galera alguém ai sabe como eu posso fazer isso ? Obrigado
João Flávio

João Flávio

Responder

Posts

18/07/2011

João Flávio

Responder

18/07/2011

Marco Pinheiro

João,

Como vc falou que é fixo, vc pode fazer um comparativo com outro tabela temporária com os códigos.
Segue um exemplo:

create table #teste (id int, lote int, artigo varchar(20), local varchar(20))
insert into #teste values (1,123,'AAAA','A001')
insert into #teste values (2,234,'AAAA','A002')
insert into #teste values (3,345,'BBBB','A003')
insert into #teste values (4,654,'CCCC','A005')
insert into #teste values (5,987,'BBBB','A007')


create table #teste1 (local varchar(20))
insert into #teste1 values ('A001')
insert into #teste1 values ('A002')
insert into #teste1 values ('A003')
insert into #teste1 values ('A004')
insert into #teste1 values ('A005')
insert into #teste1 values ('A006')
insert into #teste1 values ('A007')
insert into #teste1 values ('A008')
insert into #teste1 values ('A009')
insert into #teste1 values ('A010')


SELECT A.local FROM #teste1 A LEFT OUTER JOIN #teste B ON (A.local = B.local)
WHERE B.local IS NULL


Se quiser tem uma outra forma. Segue outro exemplo:

(SELECT 'A001'
UNION
SELECT 'A002'
UNION
SELECT 'A003'
UNION
SELECT 'A004'
UNION
SELECT 'A005'
UNION
SELECT 'A006'
UNION
SELECT 'A007'
UNION
SELECT 'A008'
UNION
SELECT 'A009'
UNION
SELECT 'A010')

EXCEPT

SELECT LOCAL FROM [sua tabela]


Existem outras, mas acredito que estas sejam mais fáceis.


Veja qual pode te atender.

Att.,

Marco.

Responder

18/07/2011

João Flávio

Olá Marco

Olha deu 100% aqui, foi resolvido, obrigado pela sua disponibilidade e atenção.

Grato
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar