1
resposta

Minha resolução

DECLARE @CODIGO VARCHAR(10);
DECLARE @NOME VARCHAR(100);
DECLARE @NUMERO_PRODUTOS INT;
DECLARE @MES INT, @ANO INT;
DECLARE @TOTAL_VENDAS FLOAT;
DECLARE @I INT;

SET @MES = 1;
SET @ANO = 2015;

SELECT @NUMERO_PRODUTOS = COUNT(*) FROM [TABELA DE PRODUTOS];

SET @I = 1;
WHILE @I <= @NUMERO_PRODUTOS
BEGIN
    SELECT @CODIGO = X.[CODIGO DO PRODUTO], @NOME = X.[NOME DO PRODUTO]
    FROM (
        SELECT ROW_NUMBER() OVER (ORDER BY [CODIGO DO PRODUTO]) AS ROWNUM, *
        FROM [TABELA DE PRODUTOS]
    ) AS X
    WHERE X.ROWNUM = @I;

    SELECT @TOTAL_VENDAS = SUM([ITENS NOTAS FISCAIS].QUANTIDADE * [ITENS NOTAS FISCAIS].[PREÇO]) 
    FROM [NOTAS FISCAIS]
    INNER JOIN [ITENS NOTAS FISCAIS] 
    ON [NOTAS FISCAIS].NUMERO = [ITENS NOTAS FISCAIS].NUMERO
    WHERE [ITENS NOTAS FISCAIS].[CODIGO DO PRODUTO] = @CODIGO
    AND YEAR([NOTAS FISCAIS].[DATA]) = @ANO 
    AND MONTH([NOTAS FISCAIS].[DATA]) = @MES;

    PRINT 'O produto ' + 
        @CODIGO + ' - ' + @NOME + ' vendeu R$' + 
        CONVERT(VARCHAR(20), @TOTAL_VENDAS) + ' no mês ' + 
        CONVERT(VARCHAR(2), @MES) + '/' + 
        CONVERT(VARCHAR(4), @ANO);

    SET @I = @I + 1;
END;

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta

Oi, Ycaro! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Seu script em T-SQL está muito bem estruturado, usando um WHILE para percorrer os produtos e calcular as vendas de cada um. Esse tipo de controle de fluxo é ótimo para praticar variáveis e loops em SQL.

Continue assim, empenhado!

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar:

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