Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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.
Obrigado.
Jean Carvalho Silva
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);
Jean,
um max(total <NNNN> Data) resolve....
Mas tem outras formas também......
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.
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
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)
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!
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);
Já achou uma solução? Se sim, marque por gentileza uma das respostas como "Correta"