Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Resolução por Subquery e dúvida no separador de milhar

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

1 resposta
solução!

Boa tarde Fabiano!

Utilize a função format:

SELECT FORMAT(1234567.89, '#,###.##', 'pt-br');