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

Alternativa a Resposta

Cheguei em uma conclusão diferente.

SELECT CONCAT ('O cliente ', TC.NOME, ' comprou R$ ',CAST(STR(SUM(INF.QUANTIDADE * INF.PRECO)) AS MONEY), ' no ano de ', CAST(NF.DATA_VENDA AS VARCHAR(4)))
FROM TABELA_DE_CLIENTES TC
INNER JOIN NOTAS_FISCAIS NF ON TC.CPF = NF.CPF
INNER JOIN ITENS_NOTAS_FISCAIS INF ON NF.NUMERO = INF.NUMERO
WHERE YEAR(NF.DATA_VENDA) =2016 
GROUP BY TC.NOME, NF.DATA_VENDA
2 respostas
solução!

Oi, Luciano! Tudo bem por aí?

Você está no caminho certo! No entanto, observei em seu resultado que os centavos não apareceram como esperado.

Como estamos lidando com dinheiro (o qual necessita de uma precisão decimal para representar os centavos), é importante especificar, ao utilizar a função STR, o número de casas decimais para que a conversão para string seja feita corretamente.

Essa etapa é importante, uma vez que, por padrão, a função STR arredonda as casas decimais.

No script abaixo, tem-se a especificação da quantidade de números antes e depois da vírgula, respectivamente, indicados por 10 e 2:

SELECT CONCAT ('O cliente ', TC.NOME, ' comprou R$ ', CAST(STR(SUM(INF.QUANTIDADE * INF.PRECO), 10, 2) AS MONEY), ' no ano de ', CAST(NF.DATA_VENDA AS VARCHAR(4)))
FROM TABELA_DE_CLIENTES TC
INNER JOIN NOTAS_FISCAIS NF ON TC.CPF = NF.CPF
INNER JOIN ITENS_NOTAS_FISCAIS INF ON NF.NUMERO = INF.NUMERO
WHERE YEAR(NF.DATA_VENDA) = 2016 
GROUP BY TC.NOME, NF.DATA_VENDA

Espero ter ajudado! Caso tenha interesse em se aprofundar na utilização e nas especificidades da função STR, recomendo a leitura do material abaixo:

Um abraço!

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

Ajudou muito! Não tinha me atentado que o valor tinha sido "arredondado" ou zerado as casas decimais, muito obrigado pela orientação.