4 Replies Latest reply: Sep 20, 2016 6:01 PM by Vinicius da Silva Duarte RSS

    Relacionamento entre Tabelas

    Vinicius da Silva Duarte

      Boa Tarde,

       

      Estou tentando fazer algo no QlikView há algum tempo e estou tendo dificuldade. Tenho a 'Tabela 1' onde preciso descobrir a coluna estado de cada linha utilizando a tabela 2.

      Só que quero que ela pegue o estado onde a coluna 'Número' da Tabela 1 é igual a 'Numero' da tabela 2 e que ele pegue a maior Data da tabela 2 que é menor que a da Tabela 1.

      Algo como  max(Data Inicio(2))  Where Data Inicio(2)<Data Inicio(1).

       

      Segue um exemplo:

       

      Tabela 1:

      Numero     Data Inicio(1)

      1               16/08/2016    

      1               21/08/2016

      1               26/08/2016

      2               07/08/2016

      2               22/08/2016

      3               07/08/2016

      3               09/08/2016

       

      Tabela 2:

       

      Numero     Data Inicio(2)         Estado

      1              10/08/2016             A

      1              14/08/2016             B

      1              20/08/2016             D

      1              28/08/2016             B

      2              05/08/2016             C

      2              10/08/2016             C

      2              20/08/2016             B

      3              04/08/2016             A

      3              06/08/2016             A

      3              14/08/2016             B

      3              28/08/2016             C

       

       

      Tabela Final:

      Numero     Data Inicio          Estado

      1               16/08/2016          B

      1               21/08/2016          D

      1               26/08/2016          D

      2               07/08/2016          C

      2               22/08/2016          B

      3               07/08/2016          A

      3               09/08/2016          A

       

      Obrigado,

      Vinicius.

        • Re: Relacionamento entre Tabelas
          rodrigo silvestre

          eu faria algo tipo assim (talvez a etapa "tab3" e "tab_final" de pra fazer no mesmo load, mas como não tenho certeza, deixei separado... e na hora do max() fique atento ao formato de data que vai sair o resultado, pro left join seguinte dar certo as datas precisam estar no mesmo formato) :

           

          tab1:

          load

          Numero,

          Data_1

          from [ tab 1 ];

           

          left joint (tab1)

          load

          Numero,

          Data_2

          from [ tab 2 ];

           

          tab3:

          Noconcatenate

          load

          Numero,

          Data_1,

          Data_2

          resident tab1 where Data_1 > Data_2 ;


          drop table tab1;

           

          tab_final:

          load

          Numero

          Data_1

          max(Data_2) as Data_tmp

          resident tab3 group by Numero, Data_1;


          drop table tab3;


          left join (tab_final)

          load

          Numero,

          Data_2 as Data_tmp,

          Estado

          from [ tab 2 ];

           

          drop field Data_tmp;

           

           


           


          • Re: Relacionamento entre Tabelas
            Alessandro Furtado

            Vinicius,

             

            segue modelo...

             

            2016-09-20_15h54_48.png

            • Re: Relacionamento entre Tabelas
              Alessandro Furtado

              segue script...

               

               

              Tabela:

              LOAD * INLINE [

              Numero,     DataInicio1

              1     ,     16/08/2016   

              1     ,     21/08/2016

              1     ,     26/08/2016

              2     ,     07/08/2016

              2     ,     22/08/2016

              3     ,     07/08/2016

              3     ,     09/08/2016

              ];

               

               

              join (Tabela)

               

               

              LOAD * INLINE [

              Numero ,DataInicio2,Estado

              1      ,10/08/2016 , A

              1      ,14/08/2016 , B

              1      ,20/08/2016 , D

              1      ,28/08/2016 , B

              2      ,05/08/2016 , C

              2      ,10/08/2016 , C

              2      ,20/08/2016 , B

              3      ,04/08/2016 , A

              3      ,06/08/2016 , A

              3      ,14/08/2016 , B

              3      ,28/08/2016 , C

              ];

               

               

              left join (Tabela)

              LOAD

                 Numero,

                 DataInicio1,

                 max(DataInicio2)       as MaiorData

              Resident Tabela

              Where DataInicio2 < DataInicio1

              Group by Numero, DataInicio1;

               

              TabelaFinal:

              NoConcatenate

              LOAD

                 Numero,

                 DataInicio1,

                 DataInicio2,

                 Estado

              Resident Tabela Where MaiorData = DataInicio2;

              //

              DROP Table Tabela;