Skip to main content
Announcements
Accelerate Your Success: Fuel your data and AI journey with the right services, delivered by our experts. Learn More
cancel
Showing results for 
Search instead for 
Did you mean: 
GOHIERO35
Contributor II
Contributor II

Difficulté à transposer les données d'une table

Bonjour à tous,

Je suis nouveau sur Qlik Community et je rencontre un véritable blocage depuis quelques jours...

Pour faire simple je charge une table qui s'appelle MAIN_COURANTE et qui contient globalement les champs suivants:

MAIN_COUR:
LOAD

"MAIN_ID_JOURNAL",
"MAIN_USER",
"MAIN_DATE_FIN",
"MAIN_DATE_DEBUT",
"MAIN_RESULTAT",
"MAIN_ID_DOSSIER",
"MAIN_COMMENTAIRE",
"MAIN_ID_SITE",
"MAIN_CREATE_DATE";
SQL SELECT

"MAIN_USER",
"MAIN_DATE_FIN",
"MAIN_DATE_DEBUT",
"MAIN_RESULTAT",
"MAIN_ID_JOURNAL",
"MAIN_ID_DOSSIER",
"MAIN_COMMENTAIRE",
"MAIN_ID_SITE",
"MAIN_CREATE_DATE"
FROM...

WHERE "MAIN_RESULTAT" in(100,101,102)
and main_date_debut > '$(vToday)';

 

Comme vous pouvez le voir je filtre uniquement les MAIN_RESULTAT sur 100,101 et 102.

Pour l'instant pour vous donner un exemple pour un MAIN_ID_JOURNAL je sors les données suivantes:

GOHIERO35_0-1656080520598.png

Alors que mon objectif serait d'avoir à la place le modèle ci-dessous:

GOHIERO35_1-1656080735522.png

J'aurais en fait besoin de transposer les résultats obtenus et les conserver dans une seule et unique table MAIN_COUR.

L'objectif serait en fait de faire devenir MAIN_ID_JOURNAL en tant que clé unique (qui est actuellement MAIN_ID_MAINCOUR mais dont je n'ai pas besoin et qui n'est pas chargée dans l'appli).

Tous les MAIN_RESULTAT ont les valeurs suivantes:

100: AFFICHAGE

101: ACQUITTEMENT

102: MISE EN DOSSIER

J'espère avoir été suffisamment clair.

 

J'ai essayé de cette façon:

GOHIERO35_0-1656083466481.png

Mais malheureusement cela créé automatiquement 3 tables supplémentaires au lieu de tout stocker dans ma table initiale...



Un grand merci d'avance pour votre aide.

Bonne journée,

Etienne

 

Labels (1)
2 Solutions

Accepted Solutions
mikaelsc
Specialist
Specialist

1) load distinct of all your main_ID s in a new_table: 

new_table: 

load distinct

main_id

resident MainCour; 

2) 3 left joins on that new table; 

left join(new_table) 

load 

main_id,

main_date_debut as DateAcquittement

resident MainCour

where MainResult = '101'; 

3) drop initial table 

drop table MainCour;

View solution in original post

mikaelsc
Specialist
Specialist

left join(new_table) 

load 

main_id,

min(main_date_debut) as DateAcquittement

resident MainCour

where MainResult = '101'

group by main_id

 

 

View solution in original post

4 Replies
mikaelsc
Specialist
Specialist

1) load distinct of all your main_ID s in a new_table: 

new_table: 

load distinct

main_id

resident MainCour; 

2) 3 left joins on that new table; 

left join(new_table) 

load 

main_id,

main_date_debut as DateAcquittement

resident MainCour

where MainResult = '101'; 

3) drop initial table 

drop table MainCour;

GOHIERO35
Contributor II
Contributor II
Author

Merci beaucoup cela fonctionne parfaitement!

Par contre cela m'a engendré une nouvelle complication.

Il s'avère que j'ai plusieurs valeurs pour DATE_AFFICHAGE, DATE_MISEENDOSSIER. 

Comment pourrais-je garder uniquement la première valeur?

J'ai essayé avec firstvalue(), mais je suppose que je ne m'y prend pas correctement...

Merci encore! Et merci d'avance.

Etienne

mikaelsc
Specialist
Specialist

left join(new_table) 

load 

main_id,

min(main_date_debut) as DateAcquittement

resident MainCour

where MainResult = '101'

group by main_id

 

 

GOHIERO35
Contributor II
Contributor II
Author

Merci beaucoup la solution fonctionne parfaitement!!

A très bientôt.

Etienne