2 Replies Latest reply on Feb 9, 2019 9:12 PM by J.Laurindo Chiappa

    Data mais próxima

    2e0c204a-15d4-4d52-ac42-01258aa052ce

      Eu tenho uma tabela de funcionários com datas de marcação de ponto

      Preciso encontrar qual a escala ativa na data da marcação em outra tabela.

      Como faço para fazer a pesquisa na tabela de escala?

       

      tentei algo do tipo

       

      Select * from funcionarios a

      inner join (select * from escala

                       order by escala.datamudanca

                       and rownum = 1) b on b.codfunc = a.codfunc and b.datamudanca<= a.data_apontamento

       

      mas não funcionou porque o select do inner join retorna apenas uma linha

      alguma sugestão?

        • 1. Re: Data mais próxima
          J.Laurindo Chiappa

          Pra vc poder buscar informações em tabelas, vc TEM que saber exatamente quais as colunas envolvidas E qual a regra lógica que coordena os dados... Por exemplo, talvez no seu caso vc tenha N registros com DATAMUDANCA < DATA_APONTAMENTO e vc quer achar o primeiro, esse contém o dado que vc quer retornar ?? Ou talvez seja uma OUTRA condição ??? Quem pode saber é SÒ e APENAS VOCÊ....

          Assim sendo, pra gente poder te ajudar, nos dê os CREATE TABLE e uns INSERTs com dados para podermos testar E nos explique DETALHADAMENTE qual lógica vc quer implementar... Faça de conta que não conhecemos NADA sobre o seu modelo de dados, NADA sobre seus dados e suas regras de negócio, até porque NA VERDADE NÃO CONHECEMOS MESMO, sim sim ??

           

          Abraços,

           

            Chiappa

          • 2. Re: Data mais próxima
            J.Laurindo Chiappa

            Mesmo sem as informações TODAS que solicitei na resposta anterior, uma coisa eu posso apontar no seu código : pelo jeito vc ordenou a sua query principal e depois colocou um ROWNUM = 1 pra trazer só o primeiro Registro ?? Se foi isso, a sua lógica está errada - como Acredito que vc sabe, no RDBMS Oracle o ROWNUM é assignado ANTES do processamento do ORDER BY... Vide https://sanaulla.info/2013/01/23/using-rownum-with-order-by-in-oracle-sql/ e https://www.techonthenet.com/oracle/functions/rownum.php para exemplos....

            Então, eu ACREDITO que o seu código devia ser algo tipo : SELECT * from (select colunas, ROWNUM as NUM_LINHA com ORDER BY condicao) WHERE NUM_LINHA = 1 , sim sim ???

             

            Abraços,

             

               Chiappa