1
resposta

COMPARATIVO ENTRE COLUNAS NA MESMA TABELA

SELECT
   MEDICAMENTO
 , APRESENTACAO
 , PRECO_M
 , PRECO_FABRICA
 , COTA
 , PRECO_DIA  

FROM MEDICAMENTOS

Gostaria de criar um campo, comparando os preços existentes nas colunas abaixo, se estiver igual "ok" se não gostaria de fazer o calculo da diferença.

, PRECO_M , PRECO_FABRICA , COTA , PRECO_DIA

Tentei usar o IIF e o CASE WHEN, porém ao tentar usar o '=' recebo o erro: Incorrect syntax near '='.

1 resposta

Oi, Thays! Tudo certo?

Desde já, peço desculpas pela demora em te responder.

Você está no caminho certo!! Para comparar os valores das colunas e retornar "ok" se estiverem iguais ou a diferença caso contrário, podemos continuar com o CASE WHEN, observe um exemplo:

SELECT
   MEDICAMENTO
 , APRESENTACAO
 , PRECO_M
 , PRECO_FABRICA
 , COTA
 , PRECO_DIA
 , CASE WHEN PRECO_M = PRECO_FABRICA AND PRECO_M = COTA AND PRECO_M = PRECO_DIA THEN 'ok' 
 ELSE CAST(ABS(PRECO_M - PRECO_FABRICA) AS VARCHAR(10)) + ' / ' + CAST(ABS(PRECO_M - COTA) AS VARCHAR(10)) + ' / ' + CAST(ABS(PRECO_M - PRECO_DIA) AS VARCHAR(10)) END AS COMPARATIVO
FROM MEDICAMENTOS

Acima, o CASE WHEN compara cada uma das colunas com a coluna PRECO_M. Se todas forem iguais, retorna "ok". Caso contrário, calcula a diferença absoluta entre os valores e retorna no formato "diferença1 / diferença2 / diferença3".

Para a apresentação das diferenças, utilizamos as funções CAST (que transforma os valores em algum tipo específico) e ABS (que obtém o valor absoluto de uma subtração.

Thays, espero ter ajudado! No entanto, vale ressaltar que como é um assunto externo ao curso e que não tenho acesso ao cenário completo do projeto, outros testes terão de ser feitos a fim de obter o resultado esperado (como no caso das comparações e diferenças, que podem ser diferentes do exemplo que eu trouxe), mas espero que esta resposta seja um bom ponto de partida para a resolução do seu problema!

Um forte abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software