Grande sacada esse de juntar vários INNER JOIN para resolver o exercício.
Como não sabia disso, resolvi por SUBQUERY, montando um INNER JOIN de cada vez:
----- 1 PARTE: identificando as notas fiscais por cliente, do ano de 2016 SELECT TC.NOME, NF.CPF, YEAR(NF.DATA) AS ANO, NF.NUMERO FROM [TABELA DE CLIENTES] AS TC INNER JOIN [NOTAS FISCAIS] AS NF ON TC.CPF = NF.CPF GROUP BY TC.NOME, NF.CPF, NF.NUMERO, YEAR(NF.DATA) HAVING YEAR(NF.DATA) = '2016'
----- 2 PARTE: totalizando os valores das notas fiscais e agrupando por nome de cliente SELECT AUX1.NOME, ROUND(SUM([QUANTIDADE] * [PREÇO]),2) AS TOTAL_NF FROM (SELECT TC.NOME, NF.CPF, YEAR(NF.DATA) AS ANO, NF.NUMERO FROM [TABELA DE CLIENTES] AS TC INNER JOIN [NOTAS FISCAIS] AS NF ON TC.CPF = NF.CPF GROUP BY TC.NOME, NF.CPF, NF.NUMERO, YEAR(NF.DATA) HAVING YEAR(NF.DATA) = '2016') AUX1 INNER JOIN [ITENS NOTAS FISCAIS] INF ON AUX1.NUMERO = INF.NUMERO GROUP BY AUX1.NOME
----- 3 PARTE: montando a expressão do problema SELECT 'O cliente ' + AUX2.NOME + ' faturou ' + CONVERT(VARCHAR, [TOTAL_NF], 2) + ' no ano de 2016' FROM (SELECT AUX1.NOME, CONVERT(VARCHAR, CONVERT(DECIMAL(15,2), SUM([QUANTIDADE] * [PREÇO]))) AS TOTAL_NF FROM (SELECT TC.NOME, NF.CPF, YEAR(NF.DATA) AS ANO, NF.NUMERO FROM [TABELA DE CLIENTES] AS TC INNER JOIN [NOTAS FISCAIS] AS NF ON TC.CPF = NF.CPF GROUP BY TC.NOME, NF.CPF, NF.NUMERO, YEAR(NF.DATA) HAVING YEAR(NF.DATA) = '2016') AUX1 INNER JOIN [ITENS NOTAS FISCAIS] INF ON AUX1.NUMERO = INF.NUMERO GROUP BY AUX1.NOME) AUX2
A dúvida é, como deixar o faturamento/valor com separador de milhar?
Grato. Fabiano