1
resposta

UTILIZANDO O FORMAT() PARA O @TOTAL_VENDAS

DECLARE @CPF VARCHAR(11);
DECLARE @NOME VARCHAR(100);
DECLARE @NUMEROS_CLIENTE INT;
DECLARE @I INT;
DECLARE @MES INT, @ANO INT;
DECLARE @TOTAL_VENDAS FLOAT;

SET @I = 1;
SELECT @NUMEROS_CLIENTE = COUNT(*) FROM [TABELA DE CLIENTES]
SET @MES = 1;
SET @ANO = 2015;

WHILE @I <= @NUMEROS_CLIENTE
BEGIN
    SELECT @CPF = X.CPF, @NOME = X.NOME
    FROM(	SELECT ROW_NUMBER() OVER(ORDER BY CPF) AS RowNum, *
            FROM [TABELA DE CLIENTES]
        ) X
    WHERE X.RowNum = @I;

    SELECT 
    @TOTAL_VENDAS = SUM([ITENS NOTAS FISCAIS].[QUANTIDADE] * [ITENS NOTAS FISCAIS].[PREÇO]) 
    FROM [NOTAS FISCAIS]
    JOIN [ITENS NOTAS FISCAIS]
    ON [NOTAS FISCAIS].[NUMERO] = [ITENS NOTAS FISCAIS].[NUMERO]
    WHERE [NOTAS FISCAIS].[CPF] = @CPF
    AND YEAR([NOTAS FISCAIS].[DATA]) = @ANO AND MONTH([NOTAS FISCAIS].[DATA]) = @MES;
    IF @TOTAL_VENDAS IS NULL 
        PRINT 'Não há registros de compras para o CPF: ' + @CPF +  ', no mês de ' + LOWER(DATENAME(MONTH, @MES))  +
            ' de ' +  CONVERT(VARCHAR(4), @ANO) + '.';
    ELSE
        PRINT 'O valor de vendas para ' + @NOME + ', CPF: ' + @CPF   + ', no mês de ' + LOWER(DATENAME(MONTH, @MES))  +
            ' de ' +  CONVERT(VARCHAR(4), @ANO) + ', foi de ' + FORMAT(@TOTAL_VENDAS, 'c', 'pt-br') + '.';
    SET @I = @I + 1
END;
1 resposta

Ei! Tudo bem, Robson?

Seu código está certinho e o uso do FORMAT() no @TOTAL_VENDAS está bem aplicado, parabéns! Ele é justamente indicado quando você quer formatar valores numéricos para exibição, como moeda no padrão brasileiro ('c', 'pt-br'), dentro de um PRINT.

Continue se dedicando aos estudos e qualquer dúvida, compartilhe!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!