Case com variavel

16/10/2019

0

Boa tarde, estou tentando realizar um laço condicional que receba o valor de uma variável e dependendo do valor passado retorne os registros que possuem determinados valores, porém não estou conseguindo com o case.

SELECT *
FROM CARGA
WHERE (CASE WHEN :VARIAVEL = 2 THEN ('2', '7')
WHEN :VARIAVEL = 3 THEN ('3', '9', '10')
WHEN :VARIAVEL = 4 THEN '4'
WHEN :VARIAVEL = 5 THEN '5'
WHEN :VARIAVEL = 6 THEN '6' END) IN DIAENTREGA;
Rafael Gomes

Rafael Gomes

Responder

Posts

18/10/2019

Emerson Nascimento

aparentemente DIAENTREGA é um conteúdo alfanumérico, certo?
acredito que isto possa te ajudar (SQL SERVER):
select
	*
from
	carga
where
	(case @variavel
			when 2 then ' 2 / 3 '
			when 3 then ' 3 / 9 / 10 '
			when 4 then ' 4 '
			when 5 then ' 5 '
			when 6 then ' 6 '
			else '  '
	end) like '% '+diaentrega+' %'

note que há espaços entre todos os números retornados pelo CASE - por exemplo '_2_/_3_' - e também entre os percentuais. %_diaentrega_%
Responder

18/10/2019

Rafael Gomes

aparentemente DIAENTREGA é um conteúdo alfanumérico, certo?
acredito que isto possa te ajudar (SQL SERVER):
select
	*
from
	carga
where
	(case @variavel
			when 2 then ' 2 / 3 '
			when 3 then ' 3 / 9 / 10 '
			when 4 then ' 4 '
			when 5 then ' 5 '
			when 6 then ' 6 '
			else '  '
	end) like '% '+diaentrega+' %'

note que há espaços entre todos os números retornados pelo CASE - por exemplo '_2_/_3_' - e também entre os percentuais. %_diaentrega_%
Responder

18/10/2019

Rafael Gomes

aparentemente DIAENTREGA é um conteúdo alfanumérico, certo?
acredito que isto possa te ajudar (SQL SERVER):
select
	*
from
	carga
where
	(case @variavel
			when 2 then ' 2 / 3 '
			when 3 then ' 3 / 9 / 10 '
			when 4 then ' 4 '
			when 5 then ' 5 '
			when 6 then ' 6 '
			else '  '
	end) like '% '+diaentrega+' %'

note que há espaços entre todos os números retornados pelo CASE - por exemplo '_2_/_3_' - e também entre os percentuais. %_diaentrega_%



Boa tarde Emerson, consegui resolver da seguinte forma:
SELECT *
FROM CARGA
WHERE ( (:VARIAVEL = 2 AND AD_DIAENTREGA IN (2,8,9))
OR
(:VARIAVEL = 3 AND AD_DIAENTREGA IN (3,7,9))
OR
(:VARIAVEL = 5 AND AD_DIAENTREGA IN (5,9)) )
Responder

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

Aceitar