1
resposta

DUVIDA Relatório de vendas válidas

Não estou conseguindo agrupar os meses para que se tenha o somatório de todos os gastos por pessoa. Por essa esquema feito, os dias ainda continuam separados.

--Relatorio de Vendas--
SELECT NOME, SUBSTRING(CONVERT(VARCHAR,DATA,120),1,7) AS 'MES_ANO', SUM(QUANTIDADE*PREÇO) AS QUANTIDADE, 
CASE WHEN [TABELA DE CLIENTES].[VOLUME DE COMPRA] >= SUM(([ITENS NOTAS FISCAIS].QUANTIDADE*[ITENS NOTAS FISCAIS].PREÇO)) THEN 'VENDA VALIDA'
ELSE 'VENDA INVALIDA' END AS 'VALIDADE DA VENDA'
--Nessa situação, eu converti minha data em ums string e utilizei o comnado substring para colocar a qunatidade de string que deverão aparecer--
FROM [TABELA DE CLIENTES] INNER JOIN [NOTAS FISCAIS]
ON [TABELA DE CLIENTES].CPF = [NOTAS FISCAIS].CPF
INNER JOIN [ITENS NOTAS FISCAIS]
ON [NOTAS FISCAIS].NUMERO = [ITENS NOTAS FISCAIS].NUMERO
GROUP BY ([TABELA DE CLIENTES].NOME), SUBSTRING(CONVERT(VARCHAR,DATA,120),1,7),(QUANTIDADE*PREÇO),[VOLUME DE COMPRA] 
ORDER BY NOME,SUBSTRING(CONVERT(VARCHAR,DATA,120),1,7)
1 resposta

Olá, Lucas, tudo bem?

Para obter a quantidade de vendas por clientes, não é necessário realizar a multiplicação do campo QUANTIDADE pelo campo PREÇO, apenas é necessário realizar a soma do campo QUANTIDADE, dessa forma: SUM(INF.QUANTIDADE) AS QUANTIDADE.

Para realizar o agrupamento das vendas por mês, você pode utilizar subconsultas, desta forma:

SELECT 
    [TABELA DE CLIENTES].NOME,
    AUX.ANO_MES,
    AUX.QUANTIDADE, 
    CASE WHEN 
        [TABELA DE CLIENTES].[VOLUME DE COMPRA] >= SUM(QUANTIDADE) THEN 'VENDA VALIDA'
    ELSE 'VENDA INVALIDA' 
    END AS 'VALIDADE DA VENDA'
FROM
    (SELECT 
            NF.CPF,
            SUBSTRING(CONVERT(VARCHAR, NF.[DATA], 120),1,7) AS ANO_MES, 
            SUM(INF.QUANTIDADE) AS QUANTIDADE 
    FROM 
            [NOTAS FISCAIS] NF
    INNER JOIN
            [ITENS NOTAS FISCAIS] INF ON NF.NUMERO = INF.NUMERO
        GROUP BY
            NF.CPF, 
            SUBSTRING(CONVERT(VARCHAR, NF.[DATA], 120),1,7)) AUX
INNER JOIN
    [TABELA DE CLIENTES] ON [TABELA DE CLIENTES].CPF = AUX.CPF
GROUP BY
    [TABELA DE CLIENTES] .NOME,
    AUX.ANO_MES,
    AUX.QUANTIDADE, 
    [TABELA DE CLIENTES].[VOLUME DE COMPRA] 
ORDER BY 
    [TABELA DE CLIENTES].NOME,
    AUX.ANO_MES

Onde, dentro da subconsulta, é buscado os campos CPF, DATA e a soma do campo QUANTIDADE, é realizada uma junção entre a tabela de NOTAS FISCAIS e a tabela de ITENS NOTAS FISCAIS e realizado o agrupamento pelo campo de CPF e DATA.

Fora da subconsulta, é feito uma nova junção com a tabela de CLIENTES, e um novo agrupamento com os campos NOME, ANO_MES, QUANTIDADE e [VOLUME DE COMPRA].

Espero ter ajudado e bons estudos!