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
Curtir tópico
+ 0
Responder
Posts
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.
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
Olha deu 100% aqui, foi resolvido, obrigado pela sua disponibilidade e atenção.
Grato
Responder
Clique aqui para fazer login e interagir na Comunidade :)