Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Amanda P.F

[Resolvido] Trazer um Intervalo de Registros

Recommended Posts

Bom dia a todos!

Estou com um problema parecido, mas o meu caso é o seguinte:

eu tenho uma lista de produtos, e preciso trazer um intervalo deles, portanto preciso de um parâmetro pra informar a referência inicial do produto e a referência final... Por exemplo: quero que liste para mim dos produtos de referência "0100001" até os de "0100005", essa lista trará 5 registros pra mim...mas dá forma que estou tentando fazer, não traz nada. Não sei se é porque estou utilizando o mesmo campo para ambos os parâmetros(campo referencia)...mas ainda não descobri uma outra maneira de fazer...

O select que estou tentando fazer é este: (o ponto crítico é o case da referência rs):

 

SELECT PSJ.REFERENCIA,
	   CAST(:REF_INICIAL AS VARCHAR(7))REF_INICIAL,
	   CAST(:REF_FINAL AS VARCHAR(7)) REF_FINAL,
	   PSJ.FATOR,
	   PSJ.FOTO_PRODUTO_SEMI_JOIA
  FROM PRODUTO_SEMI_JOIA PSJ
 WHERE PSJ.REFERENCIA BETWEEN :REF_INICIAL AND :REF_FINAL
   AND PSJ.ID_CATEGORIA_PRODUTO = CASE WHEN :ID_CATEGORIA_PRODUTO = 0 THEN PSJ.ID_CATEGORIA_PRODUTO
									   ELSE :ID_CATEGORIA_PRODUTO
								  END
   AND PSJ.REFERENCIA = CASE WHEN :REF_INICIAL = 0 THEN PSJ.REFERENCIA
							 ELSE :REF_INICIAL
						END
   AND PSJ.REFERENCIA = CASE WHEN :REF_FINAL = 0 THEN PSJ.REFERENCIA
							 ELSE :REF_FINAL
						END
ORDER BY PSJ.REFERENCIA
Se alguém souber como posso arrumar, me diga por favor rs me ajudará muito!!!

Desde já agradeço pela atenção!

tenha um ótimo dia!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

rsrs Eu estava complicando tudo, o sql funcionou sem os "cases", somente dessa forma:

 

SELECT PSJ.REFERENCIA,
	   CAST(:REF_INICIAL AS VARCHAR(7))REF_INICIAL,
	   CAST(:REF_FINAL AS VARCHAR(7)) REF_FINAL,
	   PSJ.FATOR,
	   PSJ.FOTO_PRODUTO_SEMI_JOIA
  FROM PRODUTO_SEMI_JOIA PSJ
 WHERE PSJ.ID_CATEGORIA_PRODUTO = CASE WHEN :ID_CATEGORIA_PRODUTO = 0 THEN PSJ.ID_CATEGORIA_PRODUTO
									   ELSE :ID_CATEGORIA_PRODUTO
								  END
   AND PSJ.REFERENCIA BETWEEN :REF_INICIAL AND :REF_FINAL
ORDER BY PSJ.REFERENCIA

Se quizer que traga todos os registros, não precisa daquele case = 0 é só passar o sql direto no código com uma verificação, e se for o caso, tire somente essa linha de código :

"AND PSJ.REFERENCIA BETWEEN :REF_INICIAL AND :REF_FINAL"

 

Até mais!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.