Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Retornar maior data dentro de um range de uma mesma coluna

Olá,


Preciso saber como faço para pegar a maior data dentro de um range de uma mesma coluna (campo calculado).

Exemplo: Para um processo posso ter 1 ou N linhas, dentro destas linhas, tem casos que retorna mais de uma data na coluna Estimated Delivery Date (campo calculado), porém, preciso que retorne a maior data desta coluna.

Abaixo um exemplo, filtrei um determinado processo, retornou 5 linhas e a coluna Estimated Delivery Date tem duas datas, preciso que retorne apenas a maior data em todas as linhas, inclusive na quinta linha.

Estimated_Delivery.png

Obrigado.
Jean Carvalho Silva

Labels (1)
1 Solution

Accepted Solutions
nicolett_yuri

Jean, leituras que você vai fazendo dentro do seu script.

A primeira pergunta seria: Os campos DATASREVISADAS, DATA_DO_FATURAMENTO, DATA_PEDIDO e INVOICING estão dentro da mesma tabela em seu modelo?

Se estiverem, basta você replicar a sua regra na leitura desta tabela em seu script, por exemplo:

LOAD

CAMPO1,

CAMPO2,

CAMPO3,

DATASREVISADAS,

DATA_DO_FATURAMENTO,

DATA_PEDIDO,

INVOICING,

DATE((IF(NOT IsNull(DATASREVISADAS), DATE(DATASREVISADAS),

  IF(IsNull(DATA_DO_FATURAMENTO), DATE(ALT(DATA_PEDIDO, 0) + (ALT(INVOICING, 0))) as DATA_NOVA

FROM Tabela.qvd (qvd);

View solution in original post

6 Replies
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Jean,

um max(total <NNNN> Data) resolve.... 

2016-05-09 18_48_07.jpg

Mas tem outras formas também......

furtado@farolbi.com.br
Not applicable
Author

Olá Alessandro,

Muito obrigado pelo retorno.

Testei e não deu certo para o meu caso, conforme imagem anexo, ele acabou pegando a maior data de todas as linhas, e retornou uma data que pertence a outro PROCESSO e aplicou em todas as linhas.

Entendo que para o processo JJM-0745/16 deveria retornar 12/07/2016 em vez de 27/08/2016 e para o processo JJM-1056/16 daí sim retornar 27/08/2016.

MAX_QlikView.png

Eu criei um campo calculado com a expressão abaixo.

=MAX(Total (DATE((IF(NOT IsNull(DATASREVISADAS), DATE(DATASREVISADAS),

  IF(IsNull(DATA_DO_FATURAMENTO), DATE(ALT(DATA_PEDIDO, 0) + (ALT(INVOICING, 0))))

Dessa forma deu erro:

=MAX(Total <PROCESSO> (DATE((IF(NOT IsNull(DATASREVISADAS), DATE(DATASREVISADAS),

  IF(IsNull(DATA_DO_FATURAMENTO), DATE(ALT(DATA_PEDIDO, 0) + (ALT(INVOICING, 0))))


Já pesquisei no Help do QlikView e aqui na comunidade, mas não consegui resolver o meu caso ainda.

Obrigado!

Jean Carvalho Silva

nicolett_yuri

Jean, em primeiro você pode "melhorar" o seu processo criando esse campo de data com a sua lógica:

DATE((IF(NOT IsNull(DATASREVISADAS), DATE(DATASREVISADAS),

  IF(IsNull(DATA_DO_FATURAMENTO), DATE(ALT(DATA_PEDIDO, 0) + (ALT(INVOICING, 0)))

Criando esse campo, acredito que bastaria fazer um:

MAX(TOTAL <PROCESSO> DATA_NOVA)

Not applicable
Author

Olá nicolett.yuri

Muito obrigado pelo retorno, eu pensei em criar um campo com base nas formulas que tenho, aliás, preciso saber como criar um campo calculado e chamar ele pelo aliás em outro campo calculado.

Ai conseguiria fazer da forma que sugeriu.

Sabe me dizer como faço?

Obrigado!

nicolett_yuri

Jean, leituras que você vai fazendo dentro do seu script.

A primeira pergunta seria: Os campos DATASREVISADAS, DATA_DO_FATURAMENTO, DATA_PEDIDO e INVOICING estão dentro da mesma tabela em seu modelo?

Se estiverem, basta você replicar a sua regra na leitura desta tabela em seu script, por exemplo:

LOAD

CAMPO1,

CAMPO2,

CAMPO3,

DATASREVISADAS,

DATA_DO_FATURAMENTO,

DATA_PEDIDO,

INVOICING,

DATE((IF(NOT IsNull(DATASREVISADAS), DATE(DATASREVISADAS),

  IF(IsNull(DATA_DO_FATURAMENTO), DATE(ALT(DATA_PEDIDO, 0) + (ALT(INVOICING, 0))) as DATA_NOVA

FROM Tabela.qvd (qvd);

Clever_Anjos
Employee
Employee

Já achou uma solução? Se sim, marque por gentileza uma das respostas como "Correta"

Como obter ajuda? Leia antes de postar