Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola a todos, soy algo novato en esto y a ver si alguno podría echarme una mano.
Tengo 3 tablas:
FACTURAS:
Date
Invoice_ID
Status
Customer_ID
Importe
CUSTOMER1:
Customer_ID
Entity
Channel
CUSTOMER2:
Invoice_ID
Customer_ID
Entity
Channel
La tabla FACTURAS se une con CUSTOMER1 a través del “Customer_ID” para incorporar los campos “Entity” y “Channel” a la primera tabla.
Esto posteriormente se tiene que unir con la tabla CUSTOMER2 con una lógica. La unión debe ser por el campo “Invoice_ID”. Cuando encuentre esta unión, los campos “Entity” y “Channel” deberán aparecer en la tabla FACTURAS con los valores que aparecen en CUSTOMER2 y no en CUSTOMER1.
Muchas gracias de antemano
Un saludo!
FACTURAS:
LOAD
Date
Invoice_ID
Status
Customer_ID
Importe
FROM FACTURAS.qvd (qvd);
inner join (FACTURAS)
LOAD
Customer_ID
Entity
Channel
FROM CUSTOMER1.qvd (qvd);
Drop fields Entity, Channel;
inner join (FACTURAS)
LOAD
Invoice_ID
Customer_ID AS Customer_ID_2
Entity
Channel
FROM CUSTOMER2.qvd (qvd);
que pasa cuando no exista una unión entre CUSTOMER2 y FACTURAS, quieres seguir usando los campos de CUSTOMER1 ?
Facturas_Tmp1
Date
Invoice_ID
Status
Customer_ID
Importe
Inner Join
Customer_ID
Entity
Channel
//**********************************************************
NoConcatenate
Facturas_Tmp2:
Load Date
Invoice_ID
Status
Customer_ID
Entity
Channel
Importe
Resident Facturas_Tmp2;
Drop Table
Inner Join
Invoice_ID
Customer_ID
Entity
Channel
//*********************************************************
Noconcatenate
Factura:
Load Date
Invoice_ID
Status
Customer_ID
Entity
Channel
Importe
Resident Facturas_Tmp2;
Drop Table Facturas_Tmp2
Gracias a todos!
Creo que con esto ya puedo ir tirando...
Hola alexjalo,
si en un momento dado puede que tengas datos de Entity o Channel sólo en CUSTOMER1 o en CUSTOMER2 o en ambos, es mejor que te asegures de no borrar los datos de CUSTOMER1 que cargas.
Así, yo el script que utilizaría sería este (te pongo el script con algunos datos en INLINE para que así puedas probar cómo funciona):
TEMP_FACTURAS:
LOAD * INLINE [
Date, Invoice_ID, Status, Customer_ID, Importe
01/01/2015, 000001, A, A00000001, 500
02/01/2015, 000002, A, A00000002, 600
];
Left join(TEMP_FACTURAS)
LOAD * INLINE [
Customer_ID, Entity, Channel
A00000001, Alpha, 1
A00000002, Beta, 2
A00000003, Omega, 3
];
Left join(TEMP_FACTURAS)
LOAD Invoice_ID, Entity As Entity2, Channel As Channel2;
LOAD * INLINE [
InvoiceId, Entity, Channel
000002, Alpha, 1
000005, Gamma, 4
];
FACTURAS:
LOAD
Date, Invoice_ID, Status, Customer_ID, Importe,
If(IsNull(Entity2),Entity, Entity2) As Entity,
If(IsNull(Channel2), Channel, Channel2) As Channel
RESIDENT TEMP_FACTURAS;
Drop table TEMP_FACTURAS;
Espero que te sea útil.
Un saludo
Muchisimas gracias Alex
Hola alexjalo:
Entiendo que lo has resuelto, marca como correcta la respuesta que consideres apropiada y como útiles las que lo hayan sido; de esta forma cierras el hilo.
Por otra parte, revisa el documento JOIN sample que publiqué en su momento, te ayudará a entender todas las posibilidades del JOIN
Saludos,
Joaquín