Comparar período com período e retornar um resultado

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
Mangaba
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 20
Registrado em: Qua, 15 Out 2008 10:59 am
Localização: Rio de Janeiro - RJ

Fala galera, mais uma vez trazendo uma dúvida!

Tenho uma tabela que é cadastrado os "afastamentos" do funcionário pelo RH.

Preciso saber, via select, se um determinado período que eu digitar, estará no período de férias ou outro afastamento que esteja cadastrada nessa tabela.

Por exemplo:
Mangaba precisa viajar a trabalho de 01/03/2012
Quando eu for colocar isso na tela, a tela me retorne uma msg do estilo: "Nesse período o funcionario x estará de férias"

Espero ter conseguido me expressar!

Abs
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother, beleza?
Manda mais informações pra gente, tipo, ambas as informações ficam na mesma tabela?
Caso negativo, você consegue resolver teu problema com "EXISTS" nesta outra tabela, onde guarda as férias, afastamento etc.
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Bem...
Se entendi bem existe uma tabela de afastamentos e você quer saber se tal data corresponde a um periodo de afastamento.
Pelo que entendi é simples.

Selecionar tudo

Select *
 from afastamentos a
where param_data BETWEEN a.data_inicial AND a.data_final
Supondo existir as datas de afastamento ou períodos de afastamento na tabela.
Mangaba
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 20
Registrado em: Qua, 15 Out 2008 10:59 am
Localização: Rio de Janeiro - RJ

Sim, os dados do afastamento estão todos numa única tabela (sgrh.afastamentos).

A tabela conta com os campos de Data de Entrada (início das férias), Data de Saída (fim das férias) e coloquei um campo chamado Ativo, pois podem mudar as datas, mas devido a pedido da chefia, não podemos apagar o histórico de cadastro das férias.

Daí a ideia era fazer com que, quando selecionar um intervalo, esse intervalo seja procurado na sgrh.afastamento e se tiver algum "evento" no período que ele colocou, dar a mensagem de "impossibilitado".
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Opa,

Aqui tem um select que retorna os dias aastados dentro do periodo informado(por parametro).
Acho que deve ajudar:

Selecionar tudo

SELECT DISTINCT x.dia dias_afastados
  FROM (SELECT data_inicial + LEVEL - 1 dia
          FROM (SELECT to_date(&p_ini, 'dd/mm/rrrr') data_inicial FROM dual)
        CONNECT BY LEVEL <= to_date(&p_fim, 'dd/mm/rrrr') - to_date(&p_ini, 'dd/mm/rrrr') + 1) x
      , afastamento a
 where x.dia BETWEEN a.data_inicial AND a.data_final
ORDER BY x.dia;
Mangaba
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 20
Registrado em: Qua, 15 Out 2008 10:59 am
Localização: Rio de Janeiro - RJ

Vou tentar Daniel e te retorno o resultado!
Responder
  • Informação
  • Quem está online

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