Olá, eu pensei em algumas soluções usando o CAST, estaria certo também? Ou isso teria um impacto e o caminho melhor seria com o STR?
Ah, e agrupei por Cliente as compras que ele teve, pensando em trazer o valor total daquele cliente no ano, estaria certo o racional que montei? Ou errei em algum raciocinio? :)
Alternativa 1 - Criando uma View
CREATE VIEW VALORESGASTOS3 AS
SELECT CPF, SUM(I.PRECO * I.QUANTIDADE ) AS VALORGASTO, YEAR([DATA_VENDA]) AS ANO
FROM ITENS_NOTAS_FISCAIS I
INNER JOIN NOTAS_FISCAIS N
ON N.NUMERO = I.NUMERO
GROUP BY CPF, YEAR([DATA_VENDA])
SELECT CONCAT('O cliente ', C.NOME,' comprou R$', CAST(V.VALORGASTO AS MONEY), ' no ano de ', ANO)
FROM
TABELA_DE_CLIENTES C
INNER JOIN VALORESGASTOS3 V
ON V.CPF = C.CPF
WHERE ANO = 2016
Alternativa 2 - Sem view
SELECT CONCAT('O cliente ', C.NOME,' comprou R$', CAST(SUM(I.PRECO * I.QUANTIDADE ) AS MONEY), ' no ano de ', YEAR([DATA_VENDA]))
FROM
NOTAS_FISCAIS N
INNER JOIN ITENS_NOTAS_FISCAIS I ON N.NUMERO = I.NUMERO
INNER JOIN TABELA_DE_CLIENTES C ON C.CPF = N.CPF
GROUP BY C.NOME, N.CPF, YEAR([DATA_VENDA])
HAVING YEAR([DATA_VENDA]) = 2016
Alternativa 3 - Com STR
SELECT CONCAT('O cliente ', C.NOME,' comprou R$', TRIM(STR(SUM(I.QUANTIDADE * I.PRECO) ,10,2)), ' no ano de ', YEAR([DATA_VENDA]))
FROM
NOTAS_FISCAIS N
INNER JOIN ITENS_NOTAS_FISCAIS I ON N.NUMERO = I.NUMERO
INNER JOIN TABELA_DE_CLIENTES C ON C.CPF = N.CPF
GROUP BY C.NOME, N.CPF, YEAR([DATA_VENDA])
HAVING YEAR([DATA_VENDA]) = '2016'
Valeu ^^