Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Uso do Case wheb

Ao reescrever a consulta da aula 06.1 do curso "Consultas SQL, avançando no SQL com My Sql", meu código deu erro quando inseri o case when. O Workbench retorna a seguinte msg: "Error Code 1064. you have an error in your SQL syntax; check the manual that corresponds to your MySql server version (...)". E eu não consegui identificar onde errei na sintaxe. O código que escrevi foi:

select x.cpf, x.nome, x.ano_mes, x.quantidade_vendas, x.quantidade_limite, (x.quantidade_limite - x.quantidade_vendas) as diferenca case when (x.quantidade_limite - x.quantidade_vendas) < 0 then 'inválida' else 'válida' end as status_venda from ( select nf.cpf, tc.nome, date_format(nf.data_venda, '%Y-%m') as ano_mes, sum(inf.quantidade) as quantidade_vendas, max(tc.volume_de_compra) as quantidade_limite, (max(tc.volume_de_compra)- sum(inf.quantidade)) as diferenca from notas_fiscais nf left join itens_notas_fiscais inf on nf.numero = inf.numero left join tabela_de_clientes tc on nf.cpf = tc.cpf group by nf.cpf, tc.nome, date_format(nf.data_venda, '%Y-%m') ) X;

Onde será que errei?

Obrigada!!

1 resposta
solução!

Antes do case está faltando uma ,

SELECT x.cpf, x.nome, x.ano_mes, x.quantidade_vendas, x.quantidade_limite, (x.quantidade_limite - x.quantidade_vendas) AS diferenca, CASE WHEN (x.quantidade_limite - x.quantidade_vendas) < 0 THEN 'inválida' ELSE 'válida' END AS status_venda FROM (SELECT nf.cpf, tc.nome, date_format(nf.data_venda, '%Y-%m') AS ano_mes, sum(inf.quantidade) AS quantidade_vendas, max(tc.volume_de_compra) AS quantidade_limite, (max(tc.volume_de_compra)- sum(inf.quantidade)) AS diferenca FROM notas_fiscais nf LEFT JOIN itens_notas_fiscais inf ON nf.numero = inf.numero LEFT JOIN tabela_de_clientes tc ON nf.cpf = tc.cpf GROUP BY nf.cpf, tc.nome, date_format(nf.data_venda, '%Y-%m')) X;