Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Buenas.
Actualmente tengo 4 archivos (QVD)
Ejemplos:
Archivo1 (Es el archivo Header de Pagos)
A-1 Juan
A-2 Jose
Archivo2 (Es el archivo con los Detalles del Pago)
A-1 1200 FACT B-1
A-2 2200 FACT B-2
A- 2 -300 NC C-1
Archivo3 (Es el archivo que tiene las facturas)
B-1 FACT
B-2 FACT
Archivo4 (Es el archivo que tiene las notas de crédito)
C-1 NC
C-2 NC
En tal sentido, el archivo 1 y 2 siempre se relacionan por un campo clave, y esto lo pude lograr con un JOIN.
El problema lo tengo al agregar el archivo 3 y 4. En realidad, necesito, que cuando en el archivo 2 se encuentre el valor FACT pues traiga del archivo 3 los valores de la factura, pero cuando en el archivo 2 se encuentre el valor NC ahora traiga valores del archivo 4.
Estuve intentando LEFT JOIN más un Where Exists, pero me genera resultados erróneos.
Saludos.
Hola Gabriela, lo que puedes hacer es lo siguiente:
Primero cargas el Archivo2, la parte FACT:
Archivo2_FACT:
Load * from Archivo2
where Campo= 'FACT';
//unes el 3 con el 2:
Left join(Archivo2_FACT)
Load * from Archivo3;
//Repites este paso con NC y con el Archivo 4:
Archivo2_NC:
NoConcatenate
Load * from Archivo2
where Campo= 'NC';
//unes el 4 con el 2:
Left join(Archivo2_NC)
Load * from Archivo4;
Ahora puedes concatenarlos en una sola tabla y unirlos con el Archivo1, acuérdate de poner bien los nombres de campos para que se concatene correctamente:
Archivo2:
NoConcatenate
load * resident Archivo2_FACT;
concatenate(Archivo2)
load * resident Archivo2_NC;
Archivo1:
Load * from Archivo1;
left Join(Archivo1)
Load * resident Archivo2;
Drop tables Archivo2_FACT, Archivo2_NC, Archivo2;
Espero que te sirva, saludos,
Jose
Hi Gabriela,
You can concatenate Archivo3 and Archivo4 and left join Archivo2 with the resulting table of the concatenation (use the same field name for the field containing FACT/NC and another common name for the field containing B-1, B-2, C-1 and C-3.
Eduardo
Gabriela como estas?
Prueba esto:
Total:
Load * from
Archivo1
left join(Total)
Load * from
Archivo2
where tipo='FACT'
left join(Total)
load * from
Archivo3
CONCATENATE(Total)
Load * from
Archivo2
where tipo='NC'
left join(Total)
load * from
Archivo3
Espero se entienda el ejemplo, por cualquier consulta capaz que es mas facil que subas tu modelo para que podamos ayudarte
Slds.
Fernando
Hola Fernando, acabo de intentar de acuerdo a lo que tu dices, y los resultados no están correctos, ya que trae pagos sin facturas.
Por alguna razón está excluyendo las facturas, te adjunto una imagen de mi código, porque a lo mejor no lo estoy aplicando bien.
Gabriela, no es la estructura que te pase, faltan join y donde esta el concatenate?
Hola Gabriela, lo que puedes hacer es lo siguiente:
Primero cargas el Archivo2, la parte FACT:
Archivo2_FACT:
Load * from Archivo2
where Campo= 'FACT';
//unes el 3 con el 2:
Left join(Archivo2_FACT)
Load * from Archivo3;
//Repites este paso con NC y con el Archivo 4:
Archivo2_NC:
NoConcatenate
Load * from Archivo2
where Campo= 'NC';
//unes el 4 con el 2:
Left join(Archivo2_NC)
Load * from Archivo4;
Ahora puedes concatenarlos en una sola tabla y unirlos con el Archivo1, acuérdate de poner bien los nombres de campos para que se concatene correctamente:
Archivo2:
NoConcatenate
load * resident Archivo2_FACT;
concatenate(Archivo2)
load * resident Archivo2_NC;
Archivo1:
Load * from Archivo1;
left Join(Archivo1)
Load * resident Archivo2;
Drop tables Archivo2_FACT, Archivo2_NC, Archivo2;
Espero que te sirva, saludos,
Jose
Hola Fernando, lo que pasa que primero quise intentar con una parte para ver si funcionaba.
Gracias por la ayuda.
Ya quedó solucionado con la respuesta de José María
Gracias José.
Muy buena la solución.
Me será útil para muchas cosas.
Saludos.
De nada, podrías poner respuesta correcta en vez de útil? Así la discusión aparece como solucionada y no como abierta.
Gracias, suerte.
Saludos