Ir para conteúdo

POWERED BY:

Arquivado

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

Luciano Marreiro

Case e then para if e else.

Recommended Posts

Pessoal,

 

Preciso de uma ajuda se possível, estou desenvolvendo um projeto em B.I. a partir de um antigo projeto. Nesse antigo a pessoa que carregou os campos que precisaria usar, usou sql puro para fazer algumas expressões para criar outros campos.

 

O problema é que eu preciso puxar os campos puros para depois fazer essas expressões sem sql, apenas com if. O que eu preciso então é converter essa expressão que está com case e then para uma expressao com if e else [if(condição , then , else)].

 

 

A expressão que eu preciso converter é essa:

 

(CASE WHEN (entrada_saida='FlexDb' AND mprd_estentrada = 1) OR (entrada_saida='Entrada') THEN
(CASE WHEN (mprd_dcto_codigo='6904' OR mprd_dcto_codigo='6907') THEN mprd_prvenda ELSE mprd_ctfiscal END)
WHEN (entrada_saida='FlexDb' AND mprd_estentrada = 0) OR (entrada_saida='Saida') THEN 0
END) AS ctfiscal_entrada
Valeu!

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Luciano,

 

Creio que seria isso:

 

if((entrada_saida='FlexDb' AND mprd_estentrada = 1) OR (entrada_saida='Entrada')
	,if((mprd_dcto_codigo='6904' OR mprd_dcto_codigo='6907')
		,mprd_prvenda,mprd_ctfiscal)
	,if((entrada_saida='FlexDb' AND mprd_estentrada = 0) OR (entrada_saida='Saida')
		, 0, ??)
,??)

Mas veja que faltam informações para o primeiro if (última linha) e para o penúltimo. Veja quais serão os resultados para estas condições.

 

O uso do case neste cenário é mais fácil, pois, como podes ver, para compreender o case é mais fácil do que o if.

 

Espero ter ajudado, grande abraço.

 

_ _

Fabiano Abreu

Papo SQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Fabiano, era exatamente isso que eu precisava, mas como você, também acho que falta informação no final, mas é apenas aquela expressão que consta no projeto antigo pra gerar o campo ctfiscal_entrada.

 

E concordo que com o case ficaria mais fácil, mas não aceita case nesse novo projeto, pois o B.I economiza tempo e tamanho quando a extração dos dados é feita sem query. Por isso eu queria fazer com if, mas fiquei no mesmo impasse que você ali no final e fiquei meio perdido!

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.