Pular para o conteúdo
Visualizando 15 posts - 1 até 15 (de 19 do total)
  • Autor
    Posts
  • #101997
    mpvargas
    Participante

      Caros Amigos,
      Gostaria de uma ajuda para criar uma view

      CREATE OR REPLACE FORCE VIEW “TESTE”.”V_DADOSFUNC” (“FILIAL”, “MAT”, “NOME”, “SITFOLHA”, “ADMISSAO”, “CPF”, “RG”) AS
      (
      SELECT filial, mat, nome, sitfolha, admissao, cpf, rg
      FROM FUNCIONARIOS
      WHERE rescrai <> ’31’
      AND mat between ‘100000’ and ‘899999’
      AND demissao > ‘20100000’
      AND catfunc IN (‘I’,’J’,’M’)

      Até aqui tudo bem… só que eu preciso selecionar a ultima situação do funcionário na folha, e estou me enrolando na hora de criar a sub-query
      No caso, se SITFOLHA = ‘D’ ele foi demitido ou se SITFOLHA = ‘ ‘ ele está ativo… por exemplo, se ele foi demitido e depois voltou para a empresa, eu preciso que a VIEW mostre somente a ultima situação

      Alguem pode me ajudar

      Obs.: Posso ter o mesmo funcionario em filiais diferentes, no caso com o mesmo CPF… pensei em usar uma chave composta com FILIAL+MAT, não sei se seria o mais correto

      #102003
      rman
      Participante

        @mpvargas

        Você tem alguma tabela que registre a data de admissão e demissão ?

        Será necessário fazer uma um sub-query com o max(data) pra saber a ultima situação.

        Poste o DESC das tabelas que ai fica mais facil de entender como foi modelado.

        #102008
        mpvargas
        Participante

          fala rman

          o DESC da tabela fica muito grande, por isso postei a view
          mas nesse mesma tabela (FUNCIONARIOS) tem os campos:
          DEMISSAO => data de demissao
          ADMISSAO => data de admissao

          Essa view é pra checar a situação do funcionario e excluir o seu login do sistema

          tentei com a opção MAX(DATA) mas o problema é quando o funcionario é demitido de uma filial mas continua trabalhando em outra filial…
          aí nesse caso a ultima situação dele é DEMITIDO, mas ele na verdade ainda está trabalhando em outra filial e nao pode ser excluido

          #102009
          rman
          Participante

            @mpvargas

            O campo CPF é obrigatório e é confiável, ou posso encontrar o CPF 9999999 lá ?

            A matricula é mantida quando ele é demitido em uma filial e admitido em outra ?

            Na subquery você terá que adicionar a ligação de filial e matricula ou cpf para isolar por filial.

            #102012
            mpvargas
            Participante

              O campo CPF é obrigatório, não tem 9999 porque tem validação
              No casos das matrículas, são diferentes.. vc pode ter para o mesmo funcionário matrículas diferentes… aqui é uma instituição de ensino e existem regras para cargos administrativos ou professor
              Por exemplo – Administrativo = matricula de 100000 a 199999
              – Professores = matricula de 500000 a 599999

              Portanto um funcionario pode ser adm e prof
              Pode tb ser demitido como prof e continuar como adm na mesma filial
              ou ser demitido do adm de uma filial e continuar como prof na mesma filial ou em outra filial

              por isso a minha dificuldade, são muitos detalhes

              #102017
              fabiogalera
              Participante

                Não entendi muito bem.

                Você quer uma view que mostre a última interação do funcionário, por acaso você guarda a data dessas interações ?

                Poste exemplos de linhas que estão na tabela e que modo você quer elas, assim fica mais fácil.

                #102022
                mpvargas
                Participante

                  Por exemplo

                  FILIAL MAT NOME SITFOLHA ADMIS CPF
                  ——- —– ————————————- ———– ——– ———
                  01 500866 CLAUDIO A. VIEIRA 05081996 XXX
                  15 800111 CLAUDIO A. VIEIRA D 06042001 XXX
                  03 501366 CLAUDIO A. VIEIRA 12062002 XXX
                  01 101403 CLAUDIO A. VIEIRA 14052005 XXX

                  Esse funcionario foi demitido da filial 15
                  mas trabalha nas filiais 01 e 03 sendo que na filial 01 ele trabalha como professor e na area administrativa

                  Caso ele seja demitido como professor (MAT 500866) ele nao poderá ser excluido da view porque ainda está ativo como administrativo

                  #102023
                  fabiogalera
                  Participante

                    Entendi seu problema, é relativamente simples de se resolver.

                    Porém, uma dúvida para solucionar o problema de vez, como você identifica que esses quatros CLAUDIO A. VIEIRA são a mesma pessoa ? Possui algum tipo de cadastro único ? código da pessoa ? cpf ? ou apenas o nome mesmo ?

                    #102024
                    mpvargas
                    Participante

                      Fala Fábio,
                      Eu identifico pelo CPF… são campos únicos e são validados
                      Eu coloquei XXX mas esses valores são preenchidos, inclusive pra montar esse exemplo eu usei o CPF

                      #102025
                      fabiogalera
                      Participante

                        FILIAL MAT NOME SITFOLHA ADMIS CPF


                        01 500866 CLAUDIO A. VIEIRA 05081996 XXX
                        15 800111 CLAUDIO A. VIEIRA D 06042001 XXX
                        03 501366 CLAUDIO A. VIEIRA 12062002 XXX
                        01 101403 CLAUDIO A. VIEIRA 14052005 XXX

                        Na view irá mostrar:

                        01 500866 CLAUDIO A. VIEIRA 05081996 XXX
                        03 501366 CLAUDIO A. VIEIRA 12062002 XXX
                        01 101403 CLAUDIO A. VIEIRA 14052005 XXX

                        Se sim, basta colocar na clausula where SITFOLHA IS NULL;

                        Ou você quer apenas 1 linha por funcionário?

                        #102028
                        mpvargas
                        Participante

                          Caro Fábio

                          Eu preciso da ultima situação do funcionário
                          por exemplo

                          Esse funcionario foi demitido da filial 15
                          mas trabalha nas filiais 01 e 03 sendo que na filial 01 ele trabalha como professor e na area administrativa

                          Caso ele seja demitido como professor (MAT 500866) ele nao poderá ser excluido da view porque ainda está ativo como administrativo

                          #102037
                          fabiogalera
                          Participante

                            Exatamente o que estou te dizendo.

                            CREATE OR REPLACE FORCE VIEW “TESTE”.”V_DADOSFUNC” (“FILIAL”, “MAT”, “NOME”, “SITFOLHA”, “ADMISSAO”, “CPF”, “RG”) AS
                            (
                            SELECT filial, mat, nome, sitfolha, admissao, cpf, rg
                            FROM FUNCIONARIOS
                            WHERE rescrai ’31’
                            AND mat between ‘100000’ and ‘899999’
                            AND demissao > ‘20100000’
                            AND catfunc IN (‘I’,’J’,’M’)
                            AND SITFOLHA IS NULL;

                            Não irá adicionar as linhas que possuem o campo diferente de Nulo. Não é isso que você quer ?

                            Se for a última interação, você precisa fazer diferente.
                            Você possui a DATA da atualização da linha ?

                            #102054
                            mpvargas
                            Participante

                              Fábio
                              nos campos SITFOLHA tenho as seguintes situações como principais:
                              D = Demitido
                              A = Ativo

                              se eu colocar SITFOLHA IS NULL não vem ninguem

                              Preciso da ultima alteração ou situação, mas não tenho nenhum campo que indique a data de atualização da linha…
                              O Oracle tem isso?

                              #102055
                              rman
                              Participante

                                @mpvargas

                                Você tem em mãos um problema de modelagem, sem a informação da data você não conseguirá resolver esse problema.

                                #102056
                                mpvargas
                                Participante

                                  rman
                                  foi o que pensei… já estudei várias formas de achar uma solução mas está dificil….
                                  obrigado pela ajuda.

                                Visualizando 15 posts - 1 até 15 (de 19 do total)
                                • Você deve fazer login para responder a este tópico.
                                plugins premium WordPress