Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
Est ce qu'il y a une possibilité de mettre Order By avant Group by ?
J'ai fais un autonumber sur quelque champs est j'ai stocké les résultats dans une clé
j'ai crée ensuite un identifiant unique pour chaque ligne , et là je dois faire un order by date afin de calculer l'id max pour mes transactions
(ex : la dernière transaction est celle qui a le plus grand id ) .
J'ai essayé avec ça mais ça marche pas :
Table1:
LOAD *,
AutoNumber( ACTION &DATE &montant & reference) as Key;
LOAD
RecNo()as id,ACTION,CODE,DATE,montant,reference,message
FROM [lib://Documents/données.CSV]
(txt, codepage is 28591, embedded labels, delimiter is ';', msq)
Where [CODE]<>'1913' and [CODE]<>'2001' ;
NoConcatenate
Table2:
Load*
Resident Table1 order by [DATE];
drop table Table1;
Outer Join(Table2)
LOAD
Key,
max(id) as MaxId
RESIDENT Table2
GROUP BY Key;
FinalTable:
Load*,
If(((id = MaxId) and ([message] = 'ERROR'OR [message] = 'ACCEPTED' or [message] = 'REFUSED' or [message] = 'CANCELLED'))or([message] = 'ACCEPTED') , 1, 0) as DB
Resident Table2
Order By id ;
drop Table Table2;
Pourriez-vous m'aider svp ?
Merci
Cordialement
Bonjour,
pourrais tu donner stp qques lignes en entrée et le résultat attendu ?
si tu fais max(id) tu aura le max quelque soit l'order by que tu fais ?
cdt
Bonjour,
Peux tu essayer d'adapter ce script à ton besoin ?
le principe est de charger tes transactions (le load * inline dans mon exemple) et de se servir de la date comme une clé pour faire un max dessus, et filtrer les enregistrement grâce au right join.
Attention, le code ne marchera pas si il y a deux dates identiques pour une même transactions
TRANSACTIONS:
LOAD Year(Date)*10000 + Month(Date)* 100 + Day(Date) as Period_Id,
*;
// A remplacer par ta table source
LOAD * Inline [
Transaction,Date,Ref,Montant
A,21/02/2018,T00A,350
A,22/02/2018,T00A,245
A,25/04/2018,T00A,158
B,21/02/2018,T00A,487
B,22/02/2018,T00A,578
B,28/04/2018,T00A,630
];
right join(TRANSACTIONS)
LOAD Transaction,Max(Period_Id) as Period_Id
Resident TRANSACTIONS
group by Transaction;
Bonjour ,
Merci pour ta réponse , j'ai résolu le problème , fallait mettre un order by avant la création de l'id
cdt
Merci pour ta réponse