Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
dairan73
Contributor III
Contributor III

Criar QVD histórico

Olá,

Tenho uma demanda para criar uma tabela histórica a partir de uma tabela de mudanças, por exemplo:

QVD 1:

Cod Funcionario

Data Admissão

Data Mudança

Função Nova

Função Anterior

Precisaria criar um QVD que mostrasse o funcionário e criasse um registro por dia a partir da Data Admissão com sua Função, assim quando tivesse uma Data Mudança, a partir dessa data a Função seria outra.

Exemplo:

Cod Funcionario: 001

Data Admissão: 01/01/2016

Data Mudança: 06/01/2016

Função Nova: Operador 2

Função Anterior: Operador 1

Neste exemplo teria que criar um QVD:

Cod Funcionario          Data           Função

001                          01/01/2016      Operador 1

001                          02/01/2016      Operador 1

001                          03/01/2016      Operador 1

001                          04/01/2016      Operador 1

001                          05/01/2016      Operador 1

001                          06/01/2016      Operador 2

001                          07/01/2016      Operador 2

Labels (1)
1 Solution

Accepted Solutions
nicolett_yuri

Douglas, você pode criar essa lógica utilizando o WHILE.

Veja em anexo o exemplo:

Tabela_Tmp:

LOAD * INLINE [

FUNCIONARIO, DATA_INICIO, DATA_TERMINO

1, 01/06/2016, 10/06/2016

2, 05/05/2016, 04/07/2016

3, 25/02/2016, 13/05/2016

];

Tabela:

NoConcatenate

LOAD

  FUNCIONARIO,

  DATA_INICIO,

  DATA_TERMINO,

  Date( DATA_TERMINO - (IterNo() -1), 'DD/MM/YYYY') as DATA

RESIDENT Tabela_Tmp

WHILE num( DATA_TERMINO - (IterNo() -1 )) >= DATA_INICIO;

DROP TABLE Tabela_Tmp;

View solution in original post

2 Replies
fernando_tonial
Partner - Specialist
Partner - Specialist

Boa tarde Douglas,

É possível fazer isso com a função Intervalmatch().

Veja no manual com a função funciona.

http://help.qlik.com/pt-BR/qlikview/12.0/Subsystems/Client/Content/LoadData/matching-intervals-to-di...

Don't worry, be Qlik.

Don't Worry, be Qlik.
nicolett_yuri

Douglas, você pode criar essa lógica utilizando o WHILE.

Veja em anexo o exemplo:

Tabela_Tmp:

LOAD * INLINE [

FUNCIONARIO, DATA_INICIO, DATA_TERMINO

1, 01/06/2016, 10/06/2016

2, 05/05/2016, 04/07/2016

3, 25/02/2016, 13/05/2016

];

Tabela:

NoConcatenate

LOAD

  FUNCIONARIO,

  DATA_INICIO,

  DATA_TERMINO,

  Date( DATA_TERMINO - (IterNo() -1), 'DD/MM/YYYY') as DATA

RESIDENT Tabela_Tmp

WHILE num( DATA_TERMINO - (IterNo() -1 )) >= DATA_INICIO;

DROP TABLE Tabela_Tmp;