Cenário: Quero saber quais foram os clientes que não compraram nada da minha empresa nos últimos 90 dias.
Para responder essa pergunta devemos olhar para duas tabelas, a tabela de PESSOA e a tabela de PEDIDO.
Na tabela PESSOA iremos pegar o COD_PESSOA e NOME, apenas de registro ATIVOS. Vamos dar o codinome para essa seleção de "p".
select p.cod_pessoa, p.nome from pessoa p where p.is_cliente = 'True' and p.status = 'Ativo'
Na tabela PEDIDO pegaremos o ID_CLIENTE onde o STATUS for igual a Faturado e que foi registrado nos últimos 90 dias.
select ped.id_cliente from pedido ped where ped.status = 'Faturado' and cast(ped.faturado_em as date) between current_date-90 and current_date
Agora que temos essas duas informações vamos comparar, quais clientes não tem pedidos faturados nos últimos 90 dias, pegamos a todos os registros da CONDIÇÃO 1 que não tiveram registros na CONDIÇÃO 2.
select p.cod_pessoa, p.nome from pessoa p where p.is_cliente = 'True' and p.status = 'Ativo' << CONDIÇÃO 1
and p.cod_pessoa not in << COMPARAÇÃO
(select ped.id_cliente from pedido ped where ped.status = 'Faturado' and cast(ped.faturado_em as date) between current_date-90 and current_date) << CONDIÇÃO 2
Copie o exemplo abaixo e cole no /sqlbuilder.aspx na base do cliente.
select p.cod_pessoa, p.nome
from pessoa p
where p.is_cliente = 'True'
and p.status = 'Ativo'
and p.cod_pessoa not in (select ped.id_cliente from pedido ped where ped.status = 'Faturado' and cast(ped.faturado_em as date) between current_date-90 and current_date)
Veja o resultado
Traga mais campos, para tornar o relatório mais útil.