Array
(
)

Limite entre consulta SQL

Prof. Baco
   - 27 dez 2005

Olá galera tudo bem?
Eu estou com uma pequena dificuldade. Tenho uma tabela com +- 95 registros. Mas eu gostaria que através de uma consulta SQL ele me mostrase somente os campos que ocupam a posição 15 até 20 ou qualquer outra posição que venha ser necessária. Eu tenho a senguinte sentença:
#Código

select DISTINCT top 18 b.numerocupom 
from tmovrelac a, tmov b
where a.codcolorigem=2
and a.codcoldestino=2
and a.idmovdestino = ´3718´
and b.idmov = a.idmovorigem
and b.codcoligada = a.codcolorigem
and b.numerocupom not in (
select DISTINCT top 18 b.numerocupom 
from tmovrelac a, tmov b
where a.codcolorigem=2
and a.codcoldestino=2
and a.idmovdestino = ´3718´
and b.idmov = a.idmovorigem
and b.codcoligada = a.codcolorigem
)

Será que alguém pode me ajudar??????????? :?:
Esta sentença era pra pegar até o 18º não eu quero limitar ou seja, do 10 ao 18 ou do 5 ao 18... sei lá acho q vc´s entenderam né...

Aguardo.

Wcrivelini
   - 06 jan 2006

eu não sei se entendi exatamente o que vc deseja fazer, mas vamos tentar

eu entendi que vc quer montar um SQL que possa retornar um intervalo de valores. mas que vc precisa fazer um join de tabelas antes de ordenar os registros.

se isso for utilizado com frequencia, sugiro que vc crie uma VIEW, porque o teu SELECT vai usar três vezes o mesmo grupo de registros.

daí basta vc especificar que o resultado final que vc quer esteja dentro de um intervalo (por isso o BETWEEN)

dava pra ser algo do tipo:

CREATE VIEW qryCUPOM AS
SELECT *
FROM tmovrelac a INNER JOIN tmov b
ON b.idmov = a.idmovorigem
AND b.codcoligada = a.codcolorigem
WHERE a.codcolorigem=2
AND a.codcoldestino=2
AND a.idmovdestino = ´3718´

e finalmente:

SELECT DISTINCT b.numerocupom
FROM qryCUPOM
WHERE b.numerocupom BETWEEN (
SELECT MAX(numerocupom) FROM (SELECT TOP 18 numerocupom FROM qryCUPOM) AS T)
) AND (
SELECT MAX(numerocupom) FROM (SELECT TOP 25 numerocupom FROM qryCUPOM) AS T)
)
ORDER BY b.numerocupom

tudo gira em torno dos valores que vc escreve junto aos TOP das sentenças internas.

este SQL não é rápido, mas funciona de maneira bem ´flexível´