2
respostas

POSSÍVEL SOLUÇÃO

Possível solução feita por mim. Utilizando função MONTH, DATENAME, ROUND, CONVERT, YEAR, HAVING

Eu coloquei o nome do mês e o ano em colunas separadas.

SELECT 
CLIENTE.NOME, NF.CPF, YEAR(NF.DATA) AS ANO ,DATENAME(MONTH,NF.DATA) MÊS, SUM(INF.QUANTIDADE) AS QUANTIDADE, CLIENTE.[VOLUME DE COMPRA],
CONVERT( VARCHAR, ROUND(((SUM(INF.QUANTIDADE) / [VOLUME DE COMPRA])-1) * 100, 2))+' %' AS [(%) VARIACAO]
,CASE WHEN ( SUM(INF.QUANTIDADE) < [VOLUME DE COMPRA] ) THEN 'VENDA VÁLIDA' ELSE 'VENDA INVÁLIDA' END AS [STATUS DA VENDA]

FROM [NOTAS FISCAIS] NF (NOLOCK)
INNER JOIN [ITENS NOTAS FISCAIS] INF (NOLOCK) ON NF.NUMERO = INF.NUMERO
INNER JOIN (
            SELECT TC.NOME, TC.CPF, TC.[VOLUME DE COMPRA]
            FROM [TABELA DE CLIENTES] TC (NOLOCK)) CLIENTE ON CLIENTE.CPF = NF.CPF

GROUP BY
    MONTH(NF.DATA), CLIENTE.NOME, NF.CPF, YEAR(NF.DATA), DATENAME(MONTH,NF.DATA), CLIENTE.[VOLUME DE COMPRA]

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

ORDER BY
    CLIENTE.NOME, YEAR(NF.DATA), MONTH(NF.DATA)
2 respostas

Boa, Francisco!

Muito interessante a sua forma de resolver as consultas.

Siga firme nos estudos!

Forte abraço

Top , Francisco,

Muito criativa a sua solução,

Forte Abraço.

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