Fico confuso em qual consulta oferece melhor desempenho nessas soluções.
Solução 1
select tc.NOME,
tc.CPF,
CONVERT(VARCHAR(7), NF.DATA_VENDA, 120) as RefVenda,
sum(inf.QUANTIDADE) as QtdVendida,
tc.VOLUME_DE_COMPRA as VlCompraMax,
case
when sum(inf.QUANTIDADE) > tc.VOLUME_DE_COMPRA then 'Ultrapassou o limite'
when sum(inf.QUANTIDADE) < tc.VOLUME_DE_COMPRA then 'Dentro do limite'
end as SituacaoLimite
from ITENS_NOTAS_FISCAIS inf
join NOTAS_FISCAIS nf on inf.NUMERO = nf.NUMERO
join TABELA_DE_CLIENTES tc on nf.CPF = tc.CPF
group by CONVERT(VARCHAR(7), NF.DATA_VENDA, 120), tc.NOME, tc.CPF, tc.VOLUME_DE_COMPRA
order by tc.NOME, CONVERT(VARCHAR(7), NF.DATA_VENDA, 120)
Solução 2 (Fiz de baixo pra cima)
select nome, cpf, ref, sum(Vl_Por_NF) as VlMes, MaximoVlMes,
case when (sum(Vl_Por_NF) > MaximoVlMes) Then 'Ultrapassou Limite'
when (sum(Vl_Por_NF) < MaximoVlMes) Then 'Dentro do Limite'
end as Resultado
from
(SELECT NF.NUMERO, NF.CPF, vlc.nome, CONVERT(VARCHAR(7), NF.DATA_VENDA, 120) AS REF, Nf_Volume.Vl_Por_NF, vlc.VOLUME_DE_COMPRA as MaximoVlMes
FROM NOTAS_FISCAIS NF
JOIN (
select NUMERO as NRO_NF, sum(QUANTIDADE) as Vl_Por_NF from ITENS_NOTAS_FISCAIS group by NUMERO) Nf_Volume
ON NF.NUMERO = Nf_Volume.NRO_NF
JOIN (
select cpf, nome, VOLUME_DE_COMPRA from TABELA_DE_CLIENTES) vlc
on vlc.CPF = nf.CPF) planilhao
group by nome, cpf, ref, MaximoVlMes
order by nome, cpf, ref