4 Replies Latest reply: Apr 26, 2016 3:44 PM by Márcio Rodrigo Campestrini RSS

    Dica de JOIN?

    Agnaldo Neves

      Preciso fazer Join

      no custo_medio(LCT) e quantidade(VND):

      Alguém poderia me da uma dica.

       

       

      ***********************************************

      LCT:

      LOAD lancto,

           AutoNumber(Text(lancto)) as p_lancto,

           AutoNumber(Text(empresa)) as p_empresa,

           AutoNumber(Text(produto)) as p_produto,

          data as datalancto, 

         "custo_medio",

          "ult_custo";  

      SQL SELECT *

      FROM fragata."public"."estoque_lancto"

      WHERE data>= '$(v_data)' and data <='$(v_dataf)';

      store LCT into C:\postos\qvd\LCT.qvd(qvd);

       

      ******************************************************

       

       

      VND:

      //Vendas_lancto

      LOAD data,

          turno,

          hora,

          seq,

          produto,

          operacao,

          valor_desconto,

          preco_unit_orig,

          AutoNumber(Text(mlid)) as p_recebimento,

          AutoNumber(Text(produto)) as p_produto,

          AutoNumber(Text(vendedor)) as p_vendedor,

          AutoNumber(Text(empresa)) as p_empresa,

          AutoNumber(Text(grid)) as p_lancto,

          AutoNumber(Text(deposito)) as p_deposito,

          AutoNumber(Text(grid)) as p_abastecimento,

          AutoNumber(Text(bico)) as p_bico,

          abastecimento as nrabastecimento,

          bico,

          quantidade,

          Date(Floor(data),'DD/MM/YYYY')     as     CalendarDate,

          Hour(hora) as Hora,

          pessoa,

          documento,

          "preco_unit",

          preco_unit_venda,

          valor,

          vendedor,

          abastecimento,

          usuario,

          empresa,

          mlid,

          grid as gridvnd; 

      SQL SELECT *

      FROM fragata."public".lancto

      WHERE data>= '$(v_data)' and data <='$(v_dataf)';

      store VND into C:\postos\qvd\VND.qvd(qvd

        • Re: Dica de JOIN?
          Márcio Rodrigo Campestrini

          Agnaldo,

           

          Do jeito que estão as tabelas, ao carregar no Qlikview já vai gerar um relacionamento entre elas, através dos campos

          p_lancto, p_empresa e p_produto, o que vai gerar uma chave sintética.

          Para evitar isso, você deve concatenar os campos e não carregá-los individualmente em uma das tabelas.



          • Re: Dica de JOIN?
            Klaus Gibin

            Crie uma chave entre os campos "p_lancto, p_empresa e p_produto" nas duas tabelas, após isso de o left join da chave e do campo quantidade.

            left join(VND)

            Chave,

            Quantidade

            ..

            Da uma olhada nesse post que aprofunda nos conceitos de união.

             

            htt ps: / / community.qlik.com/thread/39177

             

             

             

            (Tire o espaço do link)

              • Re: Dica de JOIN?
                Agnaldo Neves

                Eu tinha todos este campos relacionados dentro do Postgress.

                Mas precisei fazer direto no qlik.

                Era assim:

                quantidade*preco_medio As custo:

                Preciso criar algo assim. Me disseram para usar o JOIN

                 

                Dentro do sql com o relacionamento.

                Eu preciso criar novamente este campo custo. Pois tem muita expressões para corrigir.

                  • Re: Dica de JOIN?
                    Márcio Rodrigo Campestrini

                    Agnaldo

                     

                    Conforme mencionei, com aquelas alterações você terá as tabelas ligadas.

                    Se você precisa manter a fórmula existente, além do que comentei você precisará então fazer um join entre as tabelas, conforme abaixo:

                     

                    Left Join (LCT)

                    Load

                    LOAD data,

                        turno,

                        hora,

                        seq,

                        produto,

                        operacao,

                        valor_desconto,

                        preco_unit_orig,

                        AutoNumber(Text(mlid)) as p_recebimento,

                        AutoNumber(Text(vendedor)) as p_vendedor,

                        AutoNumber(Text(deposito)) as p_deposito,

                        AutoNumber(Text(grid)) as p_abastecimento,

                        AutoNumber(Text(bico)) as p_bico,

                        abastecimento as nrabastecimento,

                        bico,

                        quantidade,

                        Date(Floor(data),'DD/MM/YYYY')     as     CalendarDate,

                        Hour(hora) as Hora,

                        pessoa,

                        documento,

                        "preco_unit",

                        preco_unit_venda,

                        valor,

                        vendedor,

                        abastecimento,

                        usuario,

                        empresa,

                        mlid,

                        grid as gridvnd

                    resident VND;

                    Drop table VND;

                    Com isso você terá todos os campos em uma tabela. Depois, é só fazer outro join para criar o campo:

                     

                    Left Join (LCT)

                    Load <campo_chave_que_você_criou>,

                             quantidade * "custo_medio" As Custo

                    Resident LCT;