Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
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
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
fernando.tonial nem me deu tempo pra responder hehe
Mestre é mestre né!
Salve salve...Fernando Tonial... muito obrigado, deu certo!
Abraço
André Tonini