Dúvida com lógica no sql

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
f4b1nh0
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Sáb, 19 Set 2015 6:22 pm

Fala pessoal!
Estou iniciando no PL/SQL e estou com uma dúvida na lógica para montar minha consulta.

Segue o exemplo de uma tabela que tenho:

Preciso fazer o seguinte:
criar uma nova tabela com um novo campo que mostre tudo que é "novo" e "portabilidade novo" do mês de Outubro como "novo" e verificar se "portabilidade incremento" e "incremento" do mês de outubro se tiver em algum mês (agosto, setembro ou outubro) como "Novo" ou "Portabilidade novo" também me apareça na nova tabela como "novo".

E os demais do mês de outubro(sem duplicidade com os que já identificou como sendo novo) aparecer como está mesmo.

Tudo o que fiz até o momento:

Selecionar tudo

----------- -------identifica novos-------------------------------------

create table hit_tipopedidopj_novos parallel 7 as 
select *
from hit_tipopedidopj_base
where IN_TIPO_PEDIDO in ('Novo','Portabilidade novo')
  
;

----------- identifica incrementos novos-------------------------

create table hit_tipopedidopj_inc_novos parallel 7 as 
select nu_cpf_cnpj, 'Novo' as pagar_como
from hit_tipopedidopj_base a
where IN_TIPO_PEDIDO in ('Incremento','Portabilidade Incremento')
  and to_date(dt_transacao,'DD/MM/YYYY') >= TO_DATE('&2','YYYYMMDD')
  AND EXISTS ( select 1 
               from hit_tipopedidopj_novos b
               where b.nu_cpf_cnpj = a.nu_cpf_cnpj )
group by nu_cpf_cnpj, 'Novo'
;
exemplo da minha tabela:

NU_CPF_CNPJ DT_TRANSACAO IN_TIPO_PEDIDO
10745793000121 01/10/2015 Renovacao
32698359000170 01/10/2015 Novo
07957692000100 01/10/2015 Novo
10745793000121 01/10/2015 Renovacao
03463458000175 01/09/2015 Portabilidade novo
01006566000193 01/09/2015 Renovacao
68389097000100 01/09/2015 Incremento
souldeath
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 48
Registrado em: Qua, 25 Ago 2010 9:39 am
Localização: Limeira

Você pode usar a função DECODE:
DECODE( expression , search , result [, search , result]... [, default] )

Exemplo:

Selecionar tudo

select nu_cpf_cnpj, decode(IN_TIPO_PEDIDO, 'Incremento', 'Novo', 'Portabilidade Incremento', 'Novo', 'Portabilidade novo', 'Novo', IN_TIPO_PEDIDO)
from hit_tipopedidopj_base a
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 9 visitantes