VIEW - SUBSTITUIÇÃO DE VALORES

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
fernandocn
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Seg, 28 Fev 2011 12:05 pm
Localização: SP
FeCno

Fala galera...
Preciso de uma ajuda.
Meu problema é o seguinte, tenho uma view que captura informações de algumas tabelas, nesta view tera um campo chamado classificação_dia
preciso capturar informações de uma outra tabela e caso essas informações estejam entre uma determinada data, o campo classificação_dia deverá ser atualizado "substituidos" com as informações capturadas.
exemplo:

DATA_ESCALA | CLASSIFICACAO_DIA
10/08/10 | FER
10/10/10 | TRA
11/10/10 | TRA
12/10/10 | TRA

Informação capturadas da outra tabela

DATA_INICIO | DATA_FIM | CLASSIFICAO_DIA
11/10/10 | 11/10/10 FER

A view deverá me retornar o seguinte valor atualizado:

DATA_ESCALA | CLASSIFICACAO_DIA
10/08/10 | FER
10/10/10 | TRA
11/10/10 | FER
12/10/10 | TRA





Se algume puder me ajudar, ficarei grato.

Abs.
Fernando.
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br

Pelo que entendi faria algo assim:

Selecionar tudo

Select nvl(to.col_data, tp.col_data) Data,
       nvl(to.col_classifi, tp_col_classifi) clasific
  From tabela_pricipal tp,
       tabela_opcional To
 Where to.col_data(+) = tp.col_data
Teste e diga o resultado.
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Acho que assim não dá, pois pode ser um PERIODO.
Veja: Se o cara informar: 10-jan até 20-jan pra ser FERIADO, tem que pegar todas datas entre esses dias.

Acho que o melhor é fazer um sub-select mesmo:

Selecionar tudo

select
  A.data_escala
, A.classificacao_dia
, (select B.classificacao_dia from TABELA2 B where A.data_escala between B.data_inicio and B.data_fim) 
from tabela A
Daí basta fazer um NVL dos 2 campos que vem.

É claro, assim não pode ter 2 feriados no mesmo dia né.
burga
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Qui, 26 Nov 2009 1:05 pm
Localização: SP
Ricardo H. Tajiri

Também dá pra fazer com JOIN:

Selecionar tudo

select
  A.data_escala
, B.classificacao_dia
from tabela1 A JOIN
  tabela2 B 
    ON TRUNC(A.data_escala) between 
      TRUNC(B.data_inicio) and TRUNC(B.data_fim)
Os TRUNCs coloquei pra não dar o problema de desconsiderar alguns registros por causa das horas, mas pode matar alguns índices e acabar com o desempenho da consulta... Algumas providências podem ser tomadas pra resolver isso depois... :-o
Responder
  • Informação
  • Quem está online

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