2
respostas

Com o CASE, posso unir duas condições com o AND?

Estou tentando utilizar o CASE com duas condições, porém está retornando com erro de Syntax.

SELECT id_cobranca, parcelas, tipo_cobranca CASE WHEN parcelas > 1 AND tipo_cobranca = 'PARCELADO' THEN 'PARCELADO' WHEN parcelas = 1 AND tipo_cobranca = 'PARCELADO' THEN 'UNICA' else ('ASSINATURA') END FROM Cobranca c

2 respostas

Oii Natasha, tudo bem?

Poderia postar o log do erro, por favor? Pois até onde vejo, está correto a forma de unir as condições.

Fico aguardando :)

Natasha, tudo bem?

Parece que está faltando uma vírgula após o campo tipo_cobranca, antes do CASE. Recomendo adicionar um apelido para a coluna resultado do CASE, não é obrigatório, mas ajuda no próximo passo de quem vai consumir a informação. Os parênteses em volta das condições lógicas também não são obrigatórios.

Segue como ficou o comando:

SELECT
    id_cobranca,
    parcelas,
    tipo_cobranca,
    CASE
        WHEN (parcelas > 1 AND tipo_cobranca = 'PARCELADO') THEN 'PARCELADO'
        WHEN (parcelas = 1 AND tipo_cobranca = 'PARCELADO') THEN 'UNICA'
        ELSE 'ASSINATURA'
    END AS APELIDO_COLUNA
FROM Cobranca
;

Faça um teste por favor e nos avise se deu certo.

Bons estudos!