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

[Projeto] Solução alternativa

Na mesma query, adicionei um novo case para calcular o percentual de diferença e coloquei um HAVING para mostrar somente as compras inválidas - que está comentado pois meu objetivo era ver todas as compras numa mesma tabela

SELECT TC.NOME, TC.CPF, SUBSTRING(CONVERT(VARCHAR, NF.DATA , 120), 1, 7) 'ANO_MES',  TC.[VOLUME DE COMPRA], SUM(INF.QUANTIDADE) 'QUANTIDADE_COMPRAS',

    CASE 
        WHEN SUM(INF.QUANTIDADE) > TC.[VOLUME DE COMPRA] THEN 'COMPRA INVÁLIDA'
        ELSE 'COMPRA VÁLIDA'
    END AS STATUS_COMPRA,
    CASE 
        WHEN SUM(INF.QUANTIDADE) > TC.[VOLUME DE COMPRA] THEN  CONVERT(decimal(10,2),(SUM(INF.QUANTIDADE)/TC.[VOLUME DE COMPRA] -1)*100)
        ELSE NULL
    END AS PERCENTUAL_DIFERENÇA

FROM        [TABELA DE CLIENTES] TC
INNER JOIN [NOTAS FISCAIS] NF
    ON NF.CPF = TC.CPF
INNER JOIN [ITENS NOTAS FISCAIS] INF
    ON INF.NUMERO = NF.NUMERO


GROUP BY TC.NOME, TC.CPF, SUBSTRING(CONVERT(VARCHAR, NF.DATA , 120), 1, 7),  TC.[VOLUME DE COMPRA]

--HAVING SUM(INF.QUANTIDADE) > TC.[VOLUME DE COMPRA]

ORDER BY 1,3
1 resposta
solução!

Olá, tudo bem?

A sua query ficou muito legal, você está indo muito bem.

Continue assim e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software