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

Não deu certo

Tentei fazer usando subquery, mas deu errado na hora de calcular a porcentagem.

Codigo funcionando sem porcentagem de diferença:

SELECT N.NOME, N.MES_ANO, N.QUANTIDADE, TC.[VOLUME DE COMPRA], N.STATUS_VENDA FROM
(SELECT X.NOME, X.MES_ANO, X.QUANTIDADE,
CASE WHEN Y.[VOLUME DE COMPRA]  < X.QUANTIDADE THEN 'VENDA INVALIDA'
WHEN Y.[VOLUME DE COMPRA] >= X.QUANTIDADE  THEN 'VENDA VALIDA'
ELSE 'PRODUTO BARATO' END AS STATUS_VENDA
 FROM (
SELECT A.CPF, A.NOME, SUBSTRING(CONVERT(VARCHAR,  B.DATA, 120),1,7) AS MES_ANO , 
SUM(C.QUANTIDADE) AS QUANTIDADE FROM 
[TABELA DE CLIENTES] A
INNER JOIN [NOTAS FISCAIS] B
ON A.CPF = B.CPF
INNER JOIN [ITENS NOTAS FISCAIS] C
ON B.NUMERO = C.NUMERO
GROUP BY A.CPF, A.NOME, SUBSTRING(CONVERT(VARCHAR,  B.DATA, 120),1,7)
) X INNER JOIN [TABELA DE CLIENTES] Y ON X.CPF = Y.CPF) N
INNER JOIN [TABELA DE CLIENTES] TC ON TC.NOME = N.NOME
WHERE STATUS_VENDA = 'VENDA INVALIDA'
ORDER BY NOME, MES_ANO

Código não funcionando:

SELECT N.NOME, N.MES_ANO, N.QUANTIDADE, TC.[VOLUME DE COMPRA], TRY_CONVERT(DECIMAL(10,2), ( (N.MES_ANO/TC.[VOLUME DE COMPRA]) - 1) * 100) AS EXCESSO, N.STATUS_VENDA FROM
(SELECT X.NOME, X.MES_ANO, X.QUANTIDADE,
CASE WHEN Y.[VOLUME DE COMPRA]  < X.QUANTIDADE THEN 'VENDA INVALIDA'
WHEN Y.[VOLUME DE COMPRA] >= X.QUANTIDADE  THEN 'VENDA VALIDA'
ELSE 'PRODUTO BARATO' END AS STATUS_VENDA
 FROM (
SELECT A.CPF, A.NOME, SUBSTRING(CONVERT(VARCHAR,  B.DATA, 120),1,7) AS MES_ANO , 
SUM(C.QUANTIDADE) AS QUANTIDADE FROM 
[TABELA DE CLIENTES] A
INNER JOIN [NOTAS FISCAIS] B
ON A.CPF = B.CPF
INNER JOIN [ITENS NOTAS FISCAIS] C
ON B.NUMERO = C.NUMERO
GROUP BY A.CPF, A.NOME, SUBSTRING(CONVERT(VARCHAR,  B.DATA, 120),1,7)
) X INNER JOIN [TABELA DE CLIENTES] Y ON X.CPF = Y.CPF) N
INNER JOIN [TABELA DE CLIENTES] TC ON TC.NOME = N.NOME
WHERE STATUS_VENDA = 'VENDA INVALIDA'

ORDER BY NOME, MES_ANO
1 resposta
solução!

Funcionou:

SELECT N.NOME, N.MES_ANO, TC.[VOLUME DE COMPRA], N.QUANTIDADE, CONVERT(DECIMAL(15,2), ( (N.QUANTIDADE/TC.[VOLUME DE COMPRA]) - 1) * 100)  AS VARIACAO, N.STATUS_VENDA FROM
(SELECT X.NOME, X.MES_ANO, X.QUANTIDADE,
CASE WHEN Y.[VOLUME DE COMPRA]  < X.QUANTIDADE THEN 'VENDA INVALIDA'
WHEN Y.[VOLUME DE COMPRA] >= X.QUANTIDADE  THEN 'VENDA VALIDA'
ELSE 'PRODUTO BARATO' END AS STATUS_VENDA
 FROM (
SELECT A.CPF, A.NOME, SUBSTRING(CONVERT(VARCHAR,  B.DATA, 120),1,7) AS MES_ANO , 
SUM(C.QUANTIDADE) AS QUANTIDADE FROM 
[TABELA DE CLIENTES] A
INNER JOIN [NOTAS FISCAIS] B
ON A.CPF = B.CPF
INNER JOIN [ITENS NOTAS FISCAIS] C
ON B.NUMERO = C.NUMERO
GROUP BY A.CPF, A.NOME, SUBSTRING(CONVERT(VARCHAR,  B.DATA, 120),1,7)
) X INNER JOIN [TABELA DE CLIENTES] Y ON X.CPF = Y.CPF) N
INNER JOIN [TABELA DE CLIENTES] TC ON TC.NOME = N.NOME
WHERE STATUS_VENDA = 'VENDA INVALIDA'
ORDER BY NOME, MES_ANO