5 Replies Latest reply: Nov 24, 2016 1:20 PM by Diego Morelli RSS

    Filtrar dados em dois campos com a mesma informação

    Diego Morelli

      Pessoal, tenho aqui a tabela CODDOCTO.

      Nessa tabela tenho o campo CODDOCTOCRCSUBST, e o campo CODDOCTOCRC.

       

      CODDOCTOCRCSUBSTCODDOCTOCRCCODCLI
      22610729
      2261022099

       

      729

      33000120
      42889378

       

      Tenho outra tabela que guarda os valores do documento que é a CRCITDOC, com o campo CODDOCTOCRC que é o campo chave.

       

      VALORITEMDOCCODDOCTOCRC
      283,3422099
      283,3422610
      100,0033000
      95,0042889

       

      Conforme a tabela acima o a campo CODDOCTOCRCSUBST só tem dado quando ele substitui um documento da CODDOCTOCRC. No meu select ele está considerando tudo da tabela CODDOCTOCRC, porém preciso de apenas uma vez o valor desse campo já que o documento foi substituido. 


      O documento 22610 foi substituído pelo 22099, então seu valor é 283,34 e não esse mesmo valor 2x 283,34.


      Os outros documentos 3300 e 42889 não tiveram substiuição, levarei o valor deles também.


      Como faço para levar corretamente na minha transformação?


      Qualquer duvida eu posso tentar ser mais claro.


      Obrigado.



        • Re: Filtrar dados em dois campos com a mesma informação
          Yuri Nicolett

          Diego, se esse registro que foi substituído não é mais importante ao seu modelo, sugiro remove-lo e deixar somente o atual.

           

          Exemplo de código:

           

          Documentos_Substituidos:

          LOAD

            DISTINCT

            CODDOCTOCRCSUBST as CODDOCTOCRC

          FROM CODDOCTO

          WHERE LEN(TRIM(CODDOCTOCRCSUBST ))>0;

           

          Tabela:

          LOAD

            IF(LEN(TRIM(CODDOCTOCRCSUBST))>0, CODDOCTOCRCSUBST, CODDOCTOCRC) as CODDOCTOCRC,

            CODCLI

          FROM CODDOCTO

          WHERE

          NOT Exists(CODDOCTOCRC);


          DROP TABLE Documentos_Substituidos;

            • Re: Filtrar dados em dois campos com a mesma informação
              Diego Morelli

              Yuri, eu estava querendo fazer com IF, estava a manhã toda na labuta aqui.

               

              Do jeito que você falou sobre descartar os que foram substituidos não é uma má ideia, já que quero tratar a inadimplência. Em um segundo momento eu amarro o campo CODDOCTOCRC a tabela onde tem as notas sem problemas.

               

              Meu Script está assim na transformação.

               

              LOAD

                  CODIGOEMPRESA,

                  CODCLI,

                  CODDOCTOCRCSUBST,

                  CODDOCTOCRC,

                  NRODOCTOCRC,

                  EMISSAOCRC,  

                  DESCONTOCRC,

                  ACRESCIMOCRC,

                  VENCIMENTOCRC,

                  QUITADODOCTOCRC,

                  STATUSDOCTOCRC

              FROM [lib://Caminho Qvds Inadimplência (np_administrador)/CRCDOCTO.QVD](qvd)

              WHERE STATUSDOCTOCRC <> 'C' ;

               

               

              Left join (CRCDOCTO)

              LOAD

                 CODDOCTOCRC,

                VALORITEMDOC

              FROM [lib://Caminho Qvds Inadimplência (np_administrador)/CRCITDOC.QVD](qvd);

               

               

               

              Seção Drop:

              STORE CRCDOCTO into [lib://Qvds Transf Inadim (np_administrador)/CRCDOCTO .QVD];

              Drop table CRCDOCTO ;

              • Re: Filtrar dados em dois campos com a mesma informação
                Diego Morelli

                Tentei da primeira maneira que me falou, mas ele enxugou tudo, até outros dados vitais.

                 

                Então tentei assim:

                LOAD

                    IF(LEN(TRIM(CODDOCTOCRCSUBST))>0, CODDOCTOCRCSUBST, CODDOCTOCRC) as CODDOCTOCRC,

                    CODIGOEMPRESA,

                    CODCLI,

                    NRODOCTOCRC,

                    EMISSAOCRC,  

                    DESCONTOCRC,

                    ACRESCIMOCRC,

                    VENCIMENTOCRC,

                    QUITADODOCTOCRC,

                    STATUSDOCTOCRC

                FROM [lib://Caminho Qvds Inadimplência (np_administrador)/CRCDOCTO.QVD](qvd)

                WHERE NOT Exists(CODDOCTOCRC)

                and STATUSDOCTOCRC <> 'C';

                 

                 

                Left join (CRCDOCTO)

                LOAD

                   CODDOCTOCRC,

                  VALORITEMDOC

                FROM [lib://Caminho Qvds Inadimplência (np_administrador)/CRCITDOC.QVD](qvd);

                 

                Porém ainda não cheguei no resultado preciso, ele está trazendo do mesmo jeito os dois documentos, tanto o original quanto o substituído.