Pular para o conteúdo
Visualizando 9 posts - 1 até 9 (de 9 do total)
  • Autor
    Posts
  • #104820
    Avatar de DougDoug
    Participante

      Boa tarde pessoal

      Preciso fazer um programinha mas a lógica nao esta saindo….

      Pra resumir vou dizer que tenho uma tabela com 3 campos

      NOME MES PAGTO
      Fulano 1 900,00
      Fulano 2 900,00
      Fulano 3 900,00
      Fulano 5 900,00

      Como descobrir que o mes 4 nao foi carregado na tabela ??? Me ajudem por favor….

      #104821
      Avatar de Sergio WilliansSergio Willians
      Mestre

        @Doug

        Coloca aqui o código que você montou para termos uma base e te ajudar.

        Existem várias abordagens que podem ser feitas, para sabermos qual a melhor no seu caso, é necessário o código que você está escrevendo.

        #104822
        Avatar de DougDoug
        Participante

          Ai esta o cursor que estou criando….Ele esta trazendo todos os registros….mas tenho um funcionário que nao teve pagamento no mes 04, na tabela x21(onde ficam armazenados os pagtos).

          Objetivo do customizado é identificar se não houve carga em algum mês na x21 de acordo com os funcionários trazidos da x15

          Obrigado

          cursor ficha is
          select x21.cod_empresa,
          x21.cod_estab,
          x21.cod_func,
          x15.nome,
          x15.data_admissao,
          decode(x15.data_demissao, '', 'N/A') data_demissao,
          x21.mes_competencia MES
          from x21_ficha_financ x21, x15_funcionario x15
          where x21.cod_empresa = x15.cod_empresa
          and x21.cod_estab = x15.cod_estab
          and x21.cod_func = x15.cod_func
          and x21.cod_empresa = p_empresa
          and x21.cod_estab = p_estab
          and x15.data_admissao between to_date(p_dataini, 'DD/MM/YYYY') and
          to_date(p_datafim, 'DD/MM/YYYY')
          order by x21.cod_empresa,
          x21.cod_estab,
          x21.cod_func,
          x15.nome,
          x21.ano_competencia,
          x21.mes_competencia;

          #104825
          Avatar de Sergio WilliansSergio Willians
          Mestre

            Bom dia Doug !

            Desculpe a demora, estou sem máquina em casa e só agora consegui postar.
            Sem especular muito tecnicamente, você tem que começar a abordagem pelo mês, ou seja, verificar mês a mês todas as ocorrências referentes a eles.

            Ex:

            MES NOME PAGTO
            1 Fulano 900,00
            2 Fulano 900,00
            3 Fulano 900,00
            4
            5 Fulano 900,00

            Se você tiver uma tabela no seu sistema com os meses do ano, pode resolver isso através de um outer join no próprio SQL que construiu, ou fazer isso em PL/SQL na unha, o que seria bem mais demorado.

            Abraço

            #104827
            Avatar de DougDoug
            Participante

              Blz Will ??

              Nao tenho essas tabelas ano e mes, mas poderia cria-las sem problemas algum..nao estive mexendo nesse codigo desde sexta…o mais dificil mesmo é entender como trazer uma informacao que nao existe…hehehehe….

              #104834
              Avatar de Sergio WilliansSergio Willians
              Mestre

                Cara, eu estou sem ambiente de teste para te montar um conceito.
                Estuda sobre OUTER JOIN, vai resolver o seu problema, te garanto !

                #104835
                Avatar de rmanrman
                Participante

                  @Doug

                  Seguindo a ideia de criar a tabela de mês, a sacada está em utilizar a clausula NOT EXISTS.


                  SELECT M.MES
                  FROM MESES M
                  WHERE NOT EXISTS(
                  SELECT 1
                  FROM PAGAMENTOS P
                  WHERE P.MES = M.MES
                  AND P.ANO = :ANO
                  AND P.FUNCIONARIO_ID = :FUNCIONARIO_ID
                  )

                  Desta forma você encontra informações que não existem 😆

                  #104838
                  Avatar de Sergio WilliansSergio Willians
                  Mestre

                    @Doug
                    Se você precisar só apresentar aqueles que não possuem pagamentos, a solução do @rman é perfeita !
                    Verifique se isso atende suas necessidades e dê um feedback para nós !

                    #104861
                    Avatar de DougDoug
                    Participante

                      Boa rapaziada…estou em outro projeto e retomo esse na semana que vem hehehe…assim q tiver um feedback eu passo pra vc´s….valeu mesmo….

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