Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Outro erro no código do professor

Executei o código do professor:

SELECT AUX1.NOME, AUX1.ANO_MES, AUX1.[VOLUME DE COMPRA], AUX1.QUANTIDADE_MES, 
CONVERT(DECIMAL(15,2), ( (AUX1.QUANTIDADE_MES/AUX1.[VOLUME DE COMPRA]) - 1) * 100 AS VARIACAO, 
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
WHERE  AUX1.QUANTIDADE_MES > AUX1.[VOLUME DE COMPRA] 
ORDER BY AUX1.NOME, AUX1.ANO_MES

Mas apareceu a seguinte mensagem de erro:

Mensagem 156, Nível 15, Estado 1, Linha 11
Sintaxe incorreta próxima à palavra-chave 'AS'.
Mensagem 102, Nível 15, Estado 1, Linha 23
Sintaxe incorreta próxima a 'AUX1'.

Não entendi também o por quê ter colocado CONVERT(DECIMAL(15,2) no código.

2 respostas

Encontrei o motivo do erro.

Está faltando fechar o parenteses depois do 100 na segunda linha da query.

Questionei a parte do código CONVERT(DECIMAL(15,2) pois parecia se outra coluna ao lado da coluna VARIAÇAO, sem fechar o parenteses pareceu isto mesmo.

Este código está assim na sugestão de resposta da atividade Modifique a consulta do relatório, favor corrigir.

solução!

Olá Paulo, tudo bem?

Realmente você tem razão, estava faltando um parênteses na query, mas já realizamos as correções na atividade.

Agradecemos o feedback, continue assim e bons estudos!