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

Left join matching criteria (date interval)

Dear gurus,

I am trying to left join 2 tables in order to add a column [Duração_parada] for each row in [Apontamentos], only when DATA_HORA_INI<=DATA_HORA_INI_Parada AND DATA_HORA_FIM_Parada <=DATA_HORA_FIM

First of all, I load a table with PARADA data:


  1. Parada: 
  2. LOAD 'Parada' As Tipo_ap, 
  3.   DATA_HORA_INI As DATA_HORA_INI_Parada,  
  4.      DATA_HORA_FIM As DATA_HORA_FIM_Parada,  
  5.      Num((DATA_HORA_FIM+Time('00:01:00')-DATA_HORA_INI)*24,'#######') As Duração_parada 
  6. FROM QVDs\VIEW_PCPAPPARADA.qvd (qvd);

Then it loads Apontamentos:

  1. Apontamentos: 
  2. LOAD 'Produção' As Tipo_ap, 
  3.      RECURSO,  
  4.      DATA_HORA_INI,  
  5.      DATA_HORA_FIM,  
  6.      Num((DATA_HORA_FIM+Time('00:01:00')-DATA_HORA_INI)*24,'#######') As Duração, 
  7. FROM QVDs\VIEW_PCPAPPRODUCAO.qvd (qvd); 

And then it tries to join:

  1. LEFT JOIN (Apontamentos)  
  2. LOAD Sum(Duração_parada) 
  3. Resident Parada 
  4. Where DATA_HORA_INI<=DATA_HORA_INI_Parada AND DATA_HORA_FIM_Parada <=DATA_HORA_FIM;

But it returns error:

  1. Field not found - <DATA_HORA_INI> 
  2. LEFT JOIN  
  3. LOAD Sum(Duração_parada) 
  4. Resident Parada 
  5. Where DATA_HORA_INI<=DATA_HORA_INI_Parada AND DATA_HORA_FIM_Parada <=DATA_HORA_FIM 

Any idea on how to achieve objective or handle error?

1 Solution

Accepted Solutions
h_demarco
Contributor III
Contributor III
Author

This error was solved using SQL. So Qlikview got fields ready from server.

View solution in original post

3 Replies
settu_periasamy
Master III
Master III

Hi,

You have already aliased the field DATA_HORA_INI as DATA_HORA_INI_Parada,

So, if you are using resident load of Parada, the field wont be found

Capture.JPG

h_demarco
Contributor III
Contributor III
Author

Settu, thanks for your help. Understood your point.

My intention is to refer APONTAMENTOS.DATA_HORA_INI. Considering APONTAMENTOS was previously loaded (before join command), how can I do that?

On SQL command, this line would be something like:

ON APONTAMENTOS.DATA_HORA_INI <= PARADA.DATA_HORA_INI_Parada AND APONTAMENTOS.DATA_HORA_FIM >= PARADA.DATA_HORA_FIM_Parada

Thank you.

Henrique

h_demarco
Contributor III
Contributor III
Author

This error was solved using SQL. So Qlikview got fields ready from server.