Clientes Inédito/Reativados

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
jerry-sc
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 45
Registrado em: Ter, 01 Nov 2011 1:24 pm

Pessoal,

Alguém já fez alguma análise, com uma estrutura básica de pedido (onde possui o código de cliente, data de emissão e status do pedido), onde mostra se o cliente foi "recuperado" (estava a mais de 180 dias sem comprar) ou se ele é um cliente inédito?

Estou com uma dificuldade enorme em fazer isso, e se alguém já fez algo neste sentido e puder me ajudar, agradeço.
spernega
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

Bom dia jerry-sc,

Você pode criar uma função para identificar a última compra do cliente antes do pedido

Selecionar tudo

Function fn_ultima_compra (p_cd_cliente in number, p_dt_compra_atual in date) return varchar2
Um select mais ou menos assim:

Selecionar tudo

Select max(dt_compra) dt_compra
from   pedido ou notas
where  dt_compra < p_dt_compra_atual
and   cd_Cliente = p_cd_Cliente

Selecionar tudo

if dt_compra is compra is null then
  retorna recuperado
elsif (p_dt_compra_atual - dt_compra) > 180 then
  retorna inedito
else
  retorna regular
end if;
spernega
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

alias

Selecionar tudo

if (p_dt_compra_atual - dt_compra) > 180 then
  retorna inedito
elsif dt_compra is compra is null then
  retorna recuperado
else
  retorna regular
end if;
Responder
  • Informação