Array
(
)

SQL para retornar valores dentro de um intervalo

João Flávio
   - 18 jul 2011

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
   - 18 jul 2011

0
|
0

Marco Pinheiro
   - 18 jul 2011

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.

0
|
0

João Flávio
   - 18 jul 2011

Olá Marco

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

Grato

0
|
0