Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
I have a problem to do a join, my problem is this:
invoiced amount is -56200, but this invoice has been payed at two different times. So when I do a left Join it will duplicate the row with amount -56200. I have try to sum(Supplier Pay_Amount_LOCAL) and group by on Invoice No before i Make my Join, but without result, what i'm I missing here?
//Stabben
How does the structure of your original tables look like? Could you post your script code snippet?
(Or even better, a small sample app with some sample data).
Temp:
Load
(EPSINO &'|'&EPDIVI&'|'&EPSPYN&'|'&EPSUNO) as %SINOKey ,
(EPCUAM*EPARAT) as [Supplier Amount_LOCAL] ,
(EPCUAM) as [Supplier Amount_FOREIGN],
EPCUCD as [Supplier Currency] ,
EPARAT as [Supplier Exchangerate] ,
From $(vQvdPath)FPLEDG.qvd (qvd)
Where EPTRCD=40
;
left Join (Temp)
Load
TEXT(EPSINO &'|'&EPDIVI&'|'&EPSPYN&'|'&EPSUNO) as %SINOKey,
(EPCUAM * EPARAT) as [Supplier Pay_Amount_LOCAL]
From $(vQvdPath)FPLEDG.qvd (qvd)
Where EPTRCD=50
;
First I Load with filter EPTRCD=40 and yhis has one row with -56200
then I join and get two rows because i have two different amount with filter EPTRCD=50
//Stabben
A join may not be appropriate then. Why do you need to join?
You could consider keeping the Supplier_Amount_LOCAL value in a separate table just linked via InvoiceNo.
Or maybe create a concatenated fact table with different levels of granularity (total Supplier_Amount_LOCAL value and your detailed transactions).
Hard to say what you need to do, because data modelling should consider your complete requirements.
Hi,
If u are using the composite key use autonumber function using the both tables.
autonumber(EPSINO&EPDIVI&EPSPYN&EPSUNO) as %SINOKey,
Autonumber:
Returns a unique integer value for each distinct evaluated value of expression encountered during the script execution
Regards,
If i just keep the tables assosiated i will still be two lines and two amount with -56200. if I sum all transactions on this invoice it should be 0, but it doesen't. I do need this fields in the same fact table on the same aggregated level, for ex Invoice No. The whole modell is about if the supplier are due or not or if they have payed the whole amount.
Thanks for help
//stabben
Hi,
autonumber will not aggregate on Key, still two lines.
//Stabben
If you use any type of JOIN, records from first table will be repeated for each matching record of second.
I can see two approaches:
1) Keep them separated
2) Concatenate both tables and then run a LOAD () GROUP BY doing your sum´s
Second way would be like this:
Temp:
Load
(EPSINO &'|'&EPDIVI&'|'&EPSPYN&'|'&EPSUNO) as %SINOKey ,
(EPCUAM*EPARAT) as [Supplier Amount_LOCAL] ,
(EPCUAM) as [Supplier Amount_FOREIGN],
EPCUCD as [Supplier Currency] ,
EPARAT as [Supplier Exchangerate] ,
From $(vQvdPath)FPLEDG.qvd (qvd)
Where EPTRCD=40
;
Concatenate (Temp)
Load
TEXT(EPSINO &'|'&EPDIVI&'|'&EPSPYN&'|'&EPSUNO) as %SINOKey,
(EPCUAM * EPARAT) as [Supplier Pay_Amount_LOCAL]
From $(vQvdPath)FPLEDG.qvd (qvd)
Where EPTRCD=50;
Final:
LOAD
%SINOKey,
sum([Supplier Amount_LOCAL]) as [Supplier Amount_LOCAL],
sum([Supplier Amount_FOREIGN]) as [Supplier Amount_FOREIGN],
sum([Supplier Currency] ) as [Supplier Currency],
sum([Supplier Exchangerate]) as [Supplier Exchangerate],
sum([Supplier Pay_Amount_LOCAL]) as [Supplier Pay_Amount_LOCAL]
Resident Temp
Group By %SINOKey;
Drop Table Temp;
Will try that first thing tomorrow.
//Stabben