Skip to main content

Francophones

Announcements
QlikWorld 2023, a live, in-person thrill ride. Save $300 before February 6: REGISTER NOW!
cancel
Showing results for 
Search instead for 
Did you mean: 
MBETOURNE
Partner - Enthusiast
Partner - Enthusiast

Comment faire un group by au sein d'une table

Bonjour à tous,

Je suis nouveaux sur cette merveille qu'est Qlik et j'ai des difficultés à faire le parallèle avec mes connaissances en SQL. L'idée étant que j'ai load une table ayant cette forme:

[article_status]:
SELECT "id",
	"article_id",
	"parent_article_id",
	"movement_id",
	"active",
	"movement_date",
	"article_return_id"
FROM "catalogue"."article_status";

 

Il peut y avoir plusieurs ligne avec un article_id et des movement_date différentes. Je voudrais obtenir le movement_id pour chaque article_id et Max(movement_date).... J'espère m'être fait comprendre.

Jusque là, je n'arrive pas à faire un regroupement car je ne peux pas effectuer une opération tel que

LOAD movement_id WHERE Max(movement_date) GROUP BY article_id

J'espère que vous pourrez m'éclairer sur le sujet, merci.

1 Solution

Accepted Solutions
Taoufiq_Zarra

Si j'ai bien compris,

pour l'exemple envoyé, ya pas de mouvement_id 4, je pense que c'est juste un oubli au niveau des data sources

le output je suppose est id 3 et 4.

Je vous propose cette version (ya plusieurs façon de faire) en script de chargement :

Data:

LOAD * INLINE [
    id, article_id, parent_article_id, movement_id, active, movement_date, article_return_id
    1, 1, null, 1, false, 2019-09-10, null
    2, 1, null, 2, false, 2019-10-03, null
    3, 1, null, 1, false, 2020-04-15, null
    4, 2, null, 1, false, 2020-04-15, null
];

Result:
noconcatenate

load FirstSortedValue(id,-Date#(movement_date,'YYYY-MM-DD')) as id resident Data group by article_id ;
left join load * resident Data;

drop table Data;

 

résultats :

Capture.PNG

Regards,
Taoufiq ZARRA

"Please LIKE posts and "Accept as Solution" if the provided solution is helpful "

(you can mark up to 3 "solutions") 😉

View solution in original post

3 Replies
Taoufiq_Zarra

Bonjour,

est ce que vous pouvez partager un exemple de vos données ? (quelques lignes) ?

Qlikview ou Qliksense ?

Regards,
Taoufiq ZARRA

"Please LIKE posts and "Accept as Solution" if the provided solution is helpful "

(you can mark up to 3 "solutions") 😉
MBETOURNE
Partner - Enthusiast
Partner - Enthusiast
Author

Bonjour Taoufiq,

Oui, biensûr :

idarticle_idparent_article_idmovement_idactivemovement_datearticle_return_id
11null1false2019-09-10null
21null2false2019-10-03null
31null1false2020-04-15null
42null1false2020-04-15null

 

Le résultat attendu étant (pour les 4 premiers enregistrements):

idarticle_idparent_article_idmovement_idactivemovement_datearticle_return_id
11null1false2019-05-15null
42null4true2020-04-15null

 

Cordialement

 

Taoufiq_Zarra

Si j'ai bien compris,

pour l'exemple envoyé, ya pas de mouvement_id 4, je pense que c'est juste un oubli au niveau des data sources

le output je suppose est id 3 et 4.

Je vous propose cette version (ya plusieurs façon de faire) en script de chargement :

Data:

LOAD * INLINE [
    id, article_id, parent_article_id, movement_id, active, movement_date, article_return_id
    1, 1, null, 1, false, 2019-09-10, null
    2, 1, null, 2, false, 2019-10-03, null
    3, 1, null, 1, false, 2020-04-15, null
    4, 2, null, 1, false, 2020-04-15, null
];

Result:
noconcatenate

load FirstSortedValue(id,-Date#(movement_date,'YYYY-MM-DD')) as id resident Data group by article_id ;
left join load * resident Data;

drop table Data;

 

résultats :

Capture.PNG

Regards,
Taoufiq ZARRA

"Please LIKE posts and "Accept as Solution" if the provided solution is helpful "

(you can mark up to 3 "solutions") 😉