Skip to main content
Announcements
Introducing a new Enhanced File Management feature in Qlik Cloud! GET THE DETAILS!
cancel
Showing results for 
Search instead for 
Did you mean: 
andre_tonini
Creator II
Creator II

Data Maxima como Calendário

Pessoal,

      Estou com dificuldade em elaborar, um cenário que traga a ultima data de viagem como segue abaixo.

ODBC CONNECT TO PostgreSQL35W;

// ------- Viagem --------- //

VIAGEM_TEMPO:      

SQL SELECT

A.NR_VIAGEM,

A.NR_VIAGEM_SEQ,

A.CD_VEICULO,

A.CD_MOTORISTA,

A.DT_SAIDA,

A.DT_RETORNO,

A.KM_SAIDA,

A.KM_RETORNO,

A.MM_OBSERVACAO,

A.FL_BLOQUEADA,

A.HM_SAIDA,

A.HM_RETORNO,

B.NM_MOTORISTA,

C.NR_ORDEM,

C.PC_COMISSAO,

C.VL_BASE_COMISSAO,

C.VL_COMISSAO,

D.CD_SITUACAO,

D.VL_TOTAL AS VL_FRETE,

D.CD_LOC_COLETA AS LOCAL_COLETA,

D.CD_LOC_EMISSAO,

D.CD_LOC_ENTREGA AS LOCAL_CHEGADA,

D.QT_PESO_FRETE,

D.CD_NATCARGA,

D.DT_EMISSAO AS DT_EMISSAO_VIAG,

D.NR_CONHEC AS NR_CONHEC_VIAG,

D.SR_CONHEC AS SR_CONHEC_VIAG

FROM VIAGEM A LEFT JOIN MOTORISTA B ON

              A.CD_MOTORISTA = B.CD_MOTORISTA

             

              LEFT OUTER JOIN CONHECTOVM C ON

              A.NR_VIAGEM = C.NR_VIAGEM AND

              A.NR_VIAGEM_SEQ = C.NR_VIAGEM_SEQ

             

              LEFT OUTER JOIN CONHECTO D ON

              C.NR_ORDEM = D.NR_ORDEM   

                                    

WHERE A.DT_RETORNO > '31.12.2017' AND D.CD_SITUACAO <> '3' AND A.FL_BLOQUEADA = 'S';

VIAGEM:

LOAD

    *,

    YEAR(MAX(dt_retorno)) AS ANO,

    MONTH(MAX(dt_retorno)) AS MES,    

    DAY(MAX(dt_retorno)) AS DIA,

    DATE(MAX(dt_retorno)) AS DATA

       

Resident VIAGEM_TEMPO;

DROP TABLE VIAGEM_TEMPO;

Att,

André Tonini

Labels (1)
1 Solution

Accepted Solutions
fernando_tonial
Employee
Employee

André,

Quando utilizamos funções de agregação em Script, os campo que nao possuem agregação deve estar no Group By, mesmo principio do SQL.

Você pode fazer assim:

// ------- Viagem --------- //

VIAGEM:    

SQL SELECT

A.NR_VIAGEM,

A.NR_VIAGEM_SEQ,

A.CD_VEICULO,

A.CD_MOTORISTA,

A.DT_SAIDA,

A.DT_RETORNO,

A.KM_SAIDA,

A.KM_RETORNO,

A.MM_OBSERVACAO,

A.FL_BLOQUEADA,

A.HM_SAIDA,

A.HM_RETORNO,

B.NM_MOTORISTA,

C.NR_ORDEM,

C.PC_COMISSAO,

C.VL_BASE_COMISSAO,

C.VL_COMISSAO,

D.CD_SITUACAO,

D.VL_TOTAL AS VL_FRETE,

D.CD_LOC_COLETA AS LOCAL_COLETA,

D.CD_LOC_EMISSAO,

D.CD_LOC_ENTREGA AS LOCAL_CHEGADA,

D.QT_PESO_FRETE,

D.CD_NATCARGA,

D.DT_EMISSAO AS DT_EMISSAO_VIAG,

D.NR_CONHEC AS NR_CONHEC_VIAG,

D.SR_CONHEC AS SR_CONHEC_VIAG

FROM VIAGEM A LEFT JOIN MOTORISTA B ON

              A.CD_MOTORISTA = B.CD_MOTORISTA

           

              LEFT OUTER JOIN CONHECTOVM C ON

              A.NR_VIAGEM = C.NR_VIAGEM AND

              A.NR_VIAGEM_SEQ = C.NR_VIAGEM_SEQ

           

              LEFT OUTER JOIN CONHECTO D ON

              C.NR_ORDEM = D.NR_ORDEM 

                                  

WHERE A.DT_RETORNO > '31.12.2017' AND D.CD_SITUACAO <> '3' AND A.FL_BLOQUEADA = 'S';

LEFT JOIN (VIAGEM)

LOAD

    NR_VIAGEM,

       NR_VIAGEM_SEQ,

   YEAR(MAX(dt_retorno)) AS ANO,

    MONTH(MAX(dt_retorno)) AS MES,   

    DAY(MAX(dt_retorno)) AS DIA,

    DATE(MAX(dt_retorno)) AS DATA

Resident VIAGEM

GROUP BY NR_VIAGEM, NR_VIAGEM_SEQ;


Don't worry, be Qlik.

Tonial

Don't Worry, be Qlik.

View solution in original post

3 Replies
fernando_tonial
Employee
Employee

André,

Quando utilizamos funções de agregação em Script, os campo que nao possuem agregação deve estar no Group By, mesmo principio do SQL.

Você pode fazer assim:

// ------- Viagem --------- //

VIAGEM:    

SQL SELECT

A.NR_VIAGEM,

A.NR_VIAGEM_SEQ,

A.CD_VEICULO,

A.CD_MOTORISTA,

A.DT_SAIDA,

A.DT_RETORNO,

A.KM_SAIDA,

A.KM_RETORNO,

A.MM_OBSERVACAO,

A.FL_BLOQUEADA,

A.HM_SAIDA,

A.HM_RETORNO,

B.NM_MOTORISTA,

C.NR_ORDEM,

C.PC_COMISSAO,

C.VL_BASE_COMISSAO,

C.VL_COMISSAO,

D.CD_SITUACAO,

D.VL_TOTAL AS VL_FRETE,

D.CD_LOC_COLETA AS LOCAL_COLETA,

D.CD_LOC_EMISSAO,

D.CD_LOC_ENTREGA AS LOCAL_CHEGADA,

D.QT_PESO_FRETE,

D.CD_NATCARGA,

D.DT_EMISSAO AS DT_EMISSAO_VIAG,

D.NR_CONHEC AS NR_CONHEC_VIAG,

D.SR_CONHEC AS SR_CONHEC_VIAG

FROM VIAGEM A LEFT JOIN MOTORISTA B ON

              A.CD_MOTORISTA = B.CD_MOTORISTA

           

              LEFT OUTER JOIN CONHECTOVM C ON

              A.NR_VIAGEM = C.NR_VIAGEM AND

              A.NR_VIAGEM_SEQ = C.NR_VIAGEM_SEQ

           

              LEFT OUTER JOIN CONHECTO D ON

              C.NR_ORDEM = D.NR_ORDEM 

                                  

WHERE A.DT_RETORNO > '31.12.2017' AND D.CD_SITUACAO <> '3' AND A.FL_BLOQUEADA = 'S';

LEFT JOIN (VIAGEM)

LOAD

    NR_VIAGEM,

       NR_VIAGEM_SEQ,

   YEAR(MAX(dt_retorno)) AS ANO,

    MONTH(MAX(dt_retorno)) AS MES,   

    DAY(MAX(dt_retorno)) AS DIA,

    DATE(MAX(dt_retorno)) AS DATA

Resident VIAGEM

GROUP BY NR_VIAGEM, NR_VIAGEM_SEQ;


Don't worry, be Qlik.

Tonial

Don't Worry, be Qlik.
Thiago_Justen_

fernando.tonial‌ nem me deu tempo pra responder hehe

Mestre é mestre né!

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
andre_tonini
Creator II
Creator II
Author

Salve salve...Fernando Tonial... muito obrigado, deu certo!

Abraço

André Tonini