Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
srchagas
Creator III
Creator III

Consulta da Base retorna o Qlikview nao?

Boas Pessoal,

Alguem ja passou por isso? na base de dados tem 5.000 registros, quando vai fazer a select no qlikview ele diz 0 registro lidos.

1 Solution

Accepted Solutions
rphpacheco
Creator III
Creator III

Bom Thiago, você pode testar incluindo o Load como o Rodrigo sinalizou. Mas aqui tenho cargas que utilizam o Load e apenas o Select após o nome da tabela e todas as duas formas funcionam.

Uma vez isso aconteceu comigo e a solução foi modificar a forma de inclusão das datas de intervalo.

Criei duas variáveis e no Where da consulta coloquei da seguinte forma:

Campo BETWEEN to_date('$(DATAinicio)', 'DD/MM/YYYY') AND to_date('$(DATAfim)', 'DD/MM/YYYY')

De qualquer forma, sugiro que você traga o tratamento destes dados para a camada do Qlikview e não no Banco de Dados.

Crie scripts de carga e Store das tabelas, em seguida scripts de tratamento dos dados levando em consideração as regras desta consulta.

Desta forma você não sobrecarrega o seu banco de dados. Bom, é apenas uma sugestão

Abs.

View solution in original post

5 Replies
srchagas
Creator III
Creator III
Author

SELECT   M.ID, M.CRUN_ID, M.SIGLA_CTR,

         TO_CHAR (M.DATA_GATE_IN, 'DD/MM/YYYY') DATA_GATE_IN,

         CASE

            WHEN (   BL.MOT_CAPTA = 'BALD'

                  OR BL.MOT_CAPTA = 'TRAN'

                  OR BL.MOT_CAPTA = 'REEM'

                 )

            AND SUBSTR (CTQU_ID, 3, 1) <> 'F'

            AND R.CRUN_ID IS NULL

            AND I.CRUN_ID IS NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'BALD'

            WHEN (BL.MOT_CAPTA = 'CABO' OR BL.MOT_CAPTA = 'CBEM')

            AND SUBSTR (CTQU_ID, 3, 1) <> 'F'

            AND R.CRUN_ID IS NULL

            AND I.CRUN_ID IS NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'CABO'

            WHEN BL.MOT_CAPTA = 'DTAP'

            AND SUBSTR (CTQU_ID, 3, 1) <> 'F'

            AND R.CRUN_ID IS NULL

            AND I.CRUN_ID IS NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'DTA'

            WHEN SUBSTR (CTQU_ID, 3, 1) = 'F'

            AND R.CRUN_ID IS NULL

            AND I.CRUN_ID IS NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'EXCESSO'

            WHEN SUBSTR (CTQU_ID, 3, 1) <> 'F'

            AND R.CRUN_ID IS NOT NULL

            AND I.CRUN_ID IS NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'REEFER'

            WHEN SUBSTR (CTQU_ID, 3, 1) <> 'F'

            AND R.CRUN_ID IS NULL

            AND I.CRUN_ID IS NOT NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'IMO'

            WHEN M.PESO_MANIF_CTR <= 10000

               THEN 'PESO'

            ELSE 'IMPO'

         END MOT_CAPTA

    FROM SGTAP.MINDECTR@SGTAP_LINK M,

         SGTAP.AMR@SGTAP_LINK,

         SGTAP.BL@SGTAP_LINK,

         SGTAP.PESAGEM_RTG@SGTAP_LINK PR,

         CNTR_RUN C,

         RFR_DECLARATION R,

         IMO_DECLARATION I,

         CONTAINER CO,

         CNTR_TYPE CT        

   WHERE ID_TERMCARG = 1

     AND M.DATA_GATE_IN >= '17/06/2012'

     AND M.DATA_GATE_IN <= '26/06/2012'

     AND M.SIGLA_CTR = AMR.SIGLA_CTR

     AND M.NUMERO_VIAGEM = AMR.NUMERO_VIAGEM

     AND AMR.ID_BL = BL.ID

     AND M.CRUN_ID = C.CRUN_ID

     AND C.CNTR_NO = CO.CNTR_NO

     AND CO.CTYP_ID = CT.CTYP_ID

     AND C.CRUN_ID = R.CRUN_ID(+)

     AND C.CRUN_ID = I.CRUN_ID(+)

     AND C.CRUN_ID = PR.CRUN_ID(+)

     AND (STATUS_COMPLETO <> 'S' OR PR.ID IS NULL)

GROUP BY M.ID,

         M.CRUN_ID,

         M.SIGLA_CTR,

         TO_CHAR (M.DATA_GATE_IN, 'DD/MM/YYYY'),

         CASE

            WHEN (   BL.MOT_CAPTA = 'BALD'

                  OR BL.MOT_CAPTA = 'TRAN'

                  OR BL.MOT_CAPTA = 'REEM'

                 )

            AND SUBSTR (CTQU_ID, 3, 1) <> 'F'

            AND R.CRUN_ID IS NULL

            AND I.CRUN_ID IS NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'BALD'

            WHEN (BL.MOT_CAPTA = 'CABO' OR BL.MOT_CAPTA = 'CBEM')

            AND SUBSTR (CTQU_ID, 3, 1) <> 'F'

            AND R.CRUN_ID IS NULL

            AND I.CRUN_ID IS NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'CABO'

            WHEN BL.MOT_CAPTA = 'DTAP'

            AND SUBSTR (CTQU_ID, 3, 1) <> 'F'

            AND R.CRUN_ID IS NULL

            AND I.CRUN_ID IS NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'DTA'

            WHEN SUBSTR (CTQU_ID, 3, 1) = 'F'

            AND R.CRUN_ID IS NULL

            AND I.CRUN_ID IS NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'EXCESSO'

            WHEN SUBSTR (CTQU_ID, 3, 1) <> 'F'

            AND R.CRUN_ID IS NOT NULL

            AND I.CRUN_ID IS NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'REEFER'

            WHEN SUBSTR (CTQU_ID, 3, 1) <> 'F'

            AND R.CRUN_ID IS NULL

            AND I.CRUN_ID IS NOT NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'IMO'

            WHEN M.PESO_MANIF_CTR <= 10000

               THEN 'PESO'

            ELSE 'IMPO'

         END;

Essa select na minha base retorna 5.000 mil registros, no Qlikview coloquei assim:

PESAGEM:

SELECT   M.ID, M.CRUN_ID, M.SIGLA_CTR,

         TO_CHAR (M.DATA_GATE_IN, 'DD/MM/YYYY') DATA_GATE_IN,

         CASE

            WHEN (   BL.MOT_CAPTA = 'BALD'

                  OR BL.MOT_CAPTA = 'TRAN'

                  OR BL.MOT_CAPTA = 'REEM'

                 )

            AND SUBSTR (CTQU_ID, 3, 1) <> 'F'

            AND R.CRUN_ID IS NULL

            AND I.CRUN_ID IS NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'BALD'

            WHEN (BL.MOT_CAPTA = 'CABO' OR BL.MOT_CAPTA = 'CBEM')

            AND SUBSTR (CTQU_ID, 3, 1) <> 'F'

            AND R.CRUN_ID IS NULL

            AND I.CRUN_ID IS NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'CABO'

            WHEN BL.MOT_CAPTA = 'DTAP'

            AND SUBSTR (CTQU_ID, 3, 1) <> 'F'

            AND R.CRUN_ID IS NULL

            AND I.CRUN_ID IS NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'DTA'

            WHEN SUBSTR (CTQU_ID, 3, 1) = 'F'

            AND R.CRUN_ID IS NULL

            AND I.CRUN_ID IS NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'EXCESSO'

            WHEN SUBSTR (CTQU_ID, 3, 1) <> 'F'

            AND R.CRUN_ID IS NOT NULL

            AND I.CRUN_ID IS NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'REEFER'

            WHEN SUBSTR (CTQU_ID, 3, 1) <> 'F'

            AND R.CRUN_ID IS NULL

            AND I.CRUN_ID IS NOT NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'IMO'

            WHEN M.PESO_MANIF_CTR <= 10000

               THEN 'PESO'

            ELSE 'IMPO'

         END MOT_CAPTA

    FROM SGTAP.MINDECTR@SGTAP_LINK M,

         SGTAP.AMR@SGTAP_LINK,

         SGTAP.BL@SGTAP_LINK,

         SGTAP.PESAGEM_RTG@SGTAP_LINK PR,

         CNTR_RUN C,

         RFR_DECLARATION R,

         IMO_DECLARATION I,

         CONTAINER CO,

         CNTR_TYPE CT        

   WHERE ID_TERMCARG = 1

     AND M.DATA_GATE_IN >= '17/06/2012'

     AND M.DATA_GATE_IN <= '26/06/2012'

     AND M.SIGLA_CTR = AMR.SIGLA_CTR

     AND M.NUMERO_VIAGEM = AMR.NUMERO_VIAGEM

     AND AMR.ID_BL = BL.ID

     AND M.CRUN_ID = C.CRUN_ID

     AND C.CNTR_NO = CO.CNTR_NO

     AND CO.CTYP_ID = CT.CTYP_ID

     AND C.CRUN_ID = R.CRUN_ID(+)

     AND C.CRUN_ID = I.CRUN_ID(+)

     AND C.CRUN_ID = PR.CRUN_ID(+)

     AND (STATUS_COMPLETO <> 'S' OR PR.ID IS NULL)

GROUP BY M.ID,

         M.CRUN_ID,

         M.SIGLA_CTR,

         TO_CHAR (M.DATA_GATE_IN, 'DD/MM/YYYY'),

         CASE

            WHEN (   BL.MOT_CAPTA = 'BALD'

                  OR BL.MOT_CAPTA = 'TRAN'

                  OR BL.MOT_CAPTA = 'REEM'

                 )

            AND SUBSTR (CTQU_ID, 3, 1) <> 'F'

            AND R.CRUN_ID IS NULL

            AND I.CRUN_ID IS NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'BALD'

            WHEN (BL.MOT_CAPTA = 'CABO' OR BL.MOT_CAPTA = 'CBEM')

            AND SUBSTR (CTQU_ID, 3, 1) <> 'F'

            AND R.CRUN_ID IS NULL

            AND I.CRUN_ID IS NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'CABO'

            WHEN BL.MOT_CAPTA = 'DTAP'

            AND SUBSTR (CTQU_ID, 3, 1) <> 'F'

            AND R.CRUN_ID IS NULL

            AND I.CRUN_ID IS NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'DTA'

            WHEN SUBSTR (CTQU_ID, 3, 1) = 'F'

            AND R.CRUN_ID IS NULL

            AND I.CRUN_ID IS NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'EXCESSO'

            WHEN SUBSTR (CTQU_ID, 3, 1) <> 'F'

            AND R.CRUN_ID IS NOT NULL

            AND I.CRUN_ID IS NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'REEFER'

            WHEN SUBSTR (CTQU_ID, 3, 1) <> 'F'

            AND R.CRUN_ID IS NULL

            AND I.CRUN_ID IS NOT NULL

            AND M.PESO_MANIF_CTR > 10000

               THEN 'IMO'

            WHEN M.PESO_MANIF_CTR <= 10000

               THEN 'PESO'

            ELSE 'IMPO'

         END;

STORE PESAGEM INTO $(vPath)\PESAGEM.QVD;

DROP TABLE PESAGEM;

Anonymous
Not applicable

acho que falta o load, não?

PESAGEM:

load * ;

select ....

rphpacheco
Creator III
Creator III

Bom Thiago, você pode testar incluindo o Load como o Rodrigo sinalizou. Mas aqui tenho cargas que utilizam o Load e apenas o Select após o nome da tabela e todas as duas formas funcionam.

Uma vez isso aconteceu comigo e a solução foi modificar a forma de inclusão das datas de intervalo.

Criei duas variáveis e no Where da consulta coloquei da seguinte forma:

Campo BETWEEN to_date('$(DATAinicio)', 'DD/MM/YYYY') AND to_date('$(DATAfim)', 'DD/MM/YYYY')

De qualquer forma, sugiro que você traga o tratamento destes dados para a camada do Qlikview e não no Banco de Dados.

Crie scripts de carga e Store das tabelas, em seguida scripts de tratamento dos dados levando em consideração as regras desta consulta.

Desta forma você não sobrecarrega o seu banco de dados. Bom, é apenas uma sugestão

Abs.

Not applicable

Um caminho facil para encontrar o problema é ir debugando o seu select.

Faça um teste tipo com a sua consulta retornando * para facilitar o monitoramento (fica menos poluido).

Comente todas as tabelas e faça manualmente os joins entre elas uma por uma até encontrar o que esta matando sua consulta.

    SELECT   *

    FROM SGTAP.MINDECTR@SGTAP_LINK M,

         SGTAP.AMR@SGTAP_LINK,

         SGTAP.BL@SGTAP_LINK,

         SGTAP.PESAGEM_RTG@SGTAP_LINK PR,

         CNTR_RUN C,

         RFR_DECLARATION R,

         IMO_DECLARATION I,

         CONTAINER CO,

         CNTR_TYPE CT       

   WHERE ID_TERMCARG = 1

     AND M.SIGLA_CTR = AMR.SIGLA_CTR

     AND M.NUMERO_VIAGEM = AMR.NUMERO_VIAGEM

     AND AMR.ID_BL = BL.ID

     AND M.CRUN_ID = C.CRUN_ID

     AND C.CNTR_NO = CO.CNTR_NO

     AND CO.CTYP_ID = CT.CTYP_ID

     AND C.CRUN_ID = R.CRUN_ID(+)

     AND C.CRUN_ID = I.CRUN_ID(+)

     AND C.CRUN_ID = PR.CRUN_ID(+)

     AND (STATUS_COMPLETO <> 'S' OR PR.ID IS NULL)

srchagas
Creator III
Creator III
Author

     Bom eu alterei a Query , fazendo uma junção do que Eduardo falou + do que Raphael falou, tirei todo meu Group By e vo fazer-lo no ato do LOAD no document  para fazer a divisão é que me passaram essa Select pronta do sistema.

     ela fico assim

SELECT   M.ID,

         M.CRUN_ID,

         M.SIGLA_CTR,

         CTQU_ID,

         R.CRUN_ID REFE_CRUN,

         I.CRUN_ID IMO_CRUN,

         M.PESO_MANIF_CTR,

         TO_CHAR (M.DATA_GATE_IN, 'DD/MM/YYYY') DATA_GATE_IN,

         BL.MOT_CAPTA

    FROM SGTAP.MINDECTR@SGTAP_LINK M,

         SGTAP.AMR@SGTAP_LINK,

         SGTAP.BL@SGTAP_LINK,

         SGTAP.PESAGEM_RTG@SGTAP_LINK PR,

         CNTR_RUN C,

         RFR_DECLARATION R,

         IMO_DECLARATION I,

         CONTAINER CO,

         CNTR_TYPE CT      

   WHERE ID_TERMCARG = 1

     AND M.DATA_GATE_IN to_date('$(DATAinicio)', 'DD/MM/YYYY') AND to_date('$(DATAfim)', 'DD/MM/YYYY')

     AND M.SIGLA_CTR = AMR.SIGLA_CTR

     AND M.NUMERO_VIAGEM = AMR.NUMERO_VIAGEM

     AND AMR.ID_BL = BL.ID

     AND M.CRUN_ID = C.CRUN_ID

     AND C.CNTR_NO = CO.CNTR_NO

     AND CO.CTYP_ID = CT.CTYP_ID

     AND C.CRUN_ID = R.CRUN_ID(+)

     AND C.CRUN_ID = I.CRUN_ID(+)

     AND C.CRUN_ID = PR.CRUN_ID(+)

     AND (STATUS_COMPLETO <> 'S' OR PR.ID IS NULL);

Tem alguma especie de Bug que nao esta lendo valor como sem to_Date na verdade era isso.Agora não se isso e problema do Qlikview  enviar a select para o banco ou retorno do Banco para Qlikview

Prefiro usar o Load só no Document por que padrão que consultores deixara, aqui já