Olá pessoal, eu fiz o desafio um pouco diferente e usando três joins:
SELECT
TC.CPF
,TC.NOME
,TC.VOLUME_DE_COMPRA
,CONVERT(VARCHAR(7),NF.DATA_VENDA,102) AS MES_ANO_VENDA
,SUM(INF.QUANTIDADE) AS QUANTIDADE_TOTAL
,(TC.VOLUME_DE_COMPRA - SUM(INF.QUANTIDADE)) AS DIFERENCA
,ROUND(( 1 - (TC.VOLUME_DE_COMPRA/SUM(INF.QUANTIDADE))) * 100, 2) AS PERC_DIFERENCA
,(CASE
WHEN SUM(INF.QUANTIDADE) >= TC.VOLUME_DE_COMPRA
THEN 'LIMITE ULTRAPASSADO'
ELSE 'DENTRO DO LIMITE' END) AS STATUS_LIMITE
FROM NOTAS_FISCAIS NF
INNER JOIN ITENS_NOTAS_FISCAIS INF
ON NF.NUMERO = INF.NUMERO
INNER JOIN TABELA_DE_CLIENTES TC
ON NF.CPF = TC.CPF
GROUP BY
TC.CPF
,TC.NOME
,TC.VOLUME_DE_COMPRA
,CONVERT(VARCHAR(7),NF.DATA_VENDA,102)
HAVING
SUM(INF.QUANTIDADE) >= TC.VOLUME_DE_COMPRA
ORDER BY CONVERT(VARCHAR(7),NF.DATA_VENDA,102)