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