Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Group by et order by

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

4 Replies
ogautier62
Specialist II
Specialist II

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

christophebrault
Specialist
Specialist

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;

Inscrivez vous à ma Newletter Qlik
DoNotMissQlik- Connect with me on Linkedin
Anonymous
Not applicable
Author

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

Anonymous
Not applicable
Author

Merci pour ta réponse