2 Replies Latest reply: Aug 4, 2018 3:51 AM by Bala Bhaskar RSS

    SQL syntax

    Fabiana Yuka

      No editor de carga de dados do QlikSense, criei algumas tabelas. Agora, gostaria de utilizar os dados dessas tabelas criadas em outra seção, mas está dando erro na linha do FROM. O que está errado?

       

      Criadas anteriormente:

      • DOCS_ASSINADOS
      • ULT_ASSINATURA

       

      ----------------------------------------------

      [NUM_DOCS]:

       

      LOAD

          id_protocolo,

          processo,

          documento,

          tipo_documento,

          data_assinatura;

        

      SQL SELECT

            t1.id_protocolo,

            t1.protocolo_completo AS processo,

            (MAX(t1.documento)) AS documento,

            t1.tipo_documento,

            t1.data_assinatura

           FROM DOCS_ASSINADOS t1, ULT_ASSINATURA t2

            WHERE (t1.id_protocolo = t2.id_protocolo AND t1.data_assinatura = t2.data_assinatura AND t1.tipo_documento =

                 t2.tipo_documento);

       

       

      -------------------

      ERROR [42000] [Qlik][ODBC MySQL Wire Protocol driver][MySQL]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DOCS_ASSINADOS t1, ULT_ASSINATURA t2

       

      WHERE (t1.id_protocolo = t2.id_p' at line 6

        • Re: SQL syntax
          Thiago Justen Teixeira

          Fabiana,

           

          Quando você diz que criou anteriormente duas tabelas acredito que um load resident resolveria...mas, considerando seu select tenho uma sugestão.

           

          Receio que assim deve funcionar:

           

          DOCS_ASSINADOS:

          Load

          *;

          SQL SELECT

                id_protocolo,

                protocolo_completo AS processo,

                tipo_documento,

                data_assinatura

          FROM DOCS_ASSINADOS;

           

           

          Left Join (DOCS_ASSINADOS)

           

          Load

          id_protocolo,

          documento;

          SQL SELECT

                id_protocolo,

                MAX(documento) AS documento

               FROM DOCS_ASSINADOS t1 Where (exists (select * from ULT_ASSINATURA t2

                WHERE  t1.id_protocolo = t2.id_protocolo)) group by id_protocolo;


           

          • Re: SQL syntax
            Bala Bhaskar

            May be try like this:

            [NUM_DOCS]:

            LOAD

                id_protocolo,

                processo,

                documento,

                tipo_documento,

                data_assinatura;

             

            SQL SELECT

                  t1.id_protocolo,

                  t1.protocolo_completo AS processo,

                    (MAX(t1.documento)) AS documento,

                  t1.tipo_documento,

                  t1.data_assinatura

                 FROM DOCS_ASSINADOS t1, ULT_ASSINATURA t2

                  ON (t1.id_protocolo = t2.id_protocolo)

            where t1.data_assinatura = t2.data_assinatura AND t1.tipo_documento = t2.tipo_documento

            GROUP BY id_protocolo,t1.documento;

             

            OR

             

            SQL SELECT

                  t1.id_protocolo,

                  t1.protocolo_completo AS processo,

                    MAX(t1.documento) AS documento,

                  t1.tipo_documento,

                  t1.data_assinatura

                 FROM DOCS_ASSINADOS t1

            where exists (select t2.id_protocolo from ULT_ASSINATURA t2 where

                  t1.id_protocolo = t2.id_protocolo)

            GROUP BY id_protocolo,t1.documento;