1
resposta

Todas as vendas são válidas?

Boa noite,

Fiquei quase 2h procurando o erro na query, o status_venda está vindo com todos VENDA VÁLIDA. Acredito que tenha algum erro no agrupamento aí... Talvez precise mudar o agrupamento do volume de vendas por mês e por cliente, onde, não estou conseguindo corrigir.

A query do professor e a minha (um pouco diferente) está retornando o mesmo valor.

SELECT AUX1.NOME, AUX1.ANO_MES, AUX1.QUANTIDADE_MES,
CASE WHEN AUX1.QUANTIDADE_MES <= AUX1.[VOLUME DE COMPRA] THEN 'VENDA VÁLIDA'
WHEN AUX1.QUANTIDADE_MES > AUX1.[VOLUME DE COMPRA] THEN 'VENDA INVÁLIDA'
END AS STATUS_VENDA
FROM
(SELECT TC.NOME, CQ.ANO_MES, CQ.QUANTIDADE_MES, TC.[VOLUME DE COMPRA]
FROM
(SELECT NF.CPF, SUBSTRING(CONVERT(VARCHAR, NF.[DATA], 120),1,7) AS ANO_MES, 
    SUM(INF.QUANTIDADE) AS QUANTIDADE_MES FROM [NOTAS FISCAIS] NF
INNER JOIN [ITENS NOTAS FISCAIS] INF
ON NF.NUMERO = INF.NUMERO
GROUP BY NF.CPF, SUBSTRING(CONVERT(VARCHAR, NF.[DATA], 120),1,7)) CQ
INNER JOIN [TABELA DE CLIENTES] TC ON TC.CPF = CQ.CPF) AUX1

ORDER BY AUX1.NOME, AUX1.ANO_MES

Depois de executar a query, estão COM TODOS OS CLIENTES com STATUS_VENDA = VENDA VÁLIDA

1 resposta

Oii Joabe, tudo bem?

Cara, sua consulta está corretíssima, o único erro está no CASE, tem que trocar as chaves ali, teria que estar assim:

CASE WHEN AUX1.QUANTIDADE_MES >= AUX1.[VOLUME DE COMPRA] THEN 'VENDA VÁLIDA'
WHEN AUX1.QUANTIDADE_MES < AUX1.[VOLUME DE COMPRA] THEN 'VENDA INVÁLIDA'
END AS STATUS_VENDA

Se for maior ou igual = venda válida, se for menor = venda inválida.

Tirando isso, a consulta está ótima.

O erro está na base de dados, não sei se pode ser considerado um erro, mas acontece que o volume de compras está com um zero a mais do que a quantidade de vendas no mês, dê uma olhada:

Imgur

Ai acaba tornando todas vendas inválidas :/

Nesse tópico, o aluno traz uma solução paliativa para o código.

Espero ter ajudado. Qualquer dúvidas, só falar :)