Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Problème de somme partielle

Bonjour,

Voici mon petit soucis sur lequel je penche depuis plus d'une semaine...

Mon tableau croisé dynamique est composé de trois dimensions: représentant, client et n° de commande.

Je dois y calculer en € la valeur moyenne de mes devis.

Pour la dimension n° de commande, je prends la moyenne de tous les devis réalisés. Pour la dimension client, je prend la moyenne des valeurs précédemment calculées.

Finalement pour la dimension représentant, je pensais faire la même chose, mais pour une raison inconnu, qlikview ne me calcule pas la moyenne sur les clients, mais sur les commande, ce qui vient fausser mon résultat...

Voici l'expression que j'utilise:

if(Dimensionality()=3, aggr(sum(JD_PX_TOTAL)/count(JD_CODUNIQ), JD_NDEVIS),

  if(Dimensionality()=2, avg(aggr(sum(JD_PX_TOTAL)/count(JD_CODUNIQ), JD_NDEVIS)),

  if(Dimensionality()=1, sum(aggr(avg(aggr(sum(JD_PX_TOTAL)/count(JD_CODUNIQ), JD_NDEVIS)), JD_REF_CLIENT))

)))

Je vous avoue que j'ai essayé plusieurs expressions différentes depuis la semaine passée et rien n'y fais, je n'arrive pas à additionner les moyennes de chaque client pour en reprendre une moyenne pour le représentant

4 Replies
Anonymous
Not applicable
Author

Bonjour,

Peux tu mettre un fichier d'exemple ?

Merci

Not applicable
Author

Voici le fichier qvw et les fichiers qvd avec les données

yvesqlik
Partner - Contributor III
Partner - Contributor III

Tableau normal:

Dimension: JD_CODUNIQ

Formule pour les devis: aggr(NODISTINCT avg(JD_PX_TOTAL),JD_NDEVIS)

Formule pour les clients: aggr(NODISTINCT avg(JD_PX_TOTAL), JD_REF_CLIENT)

Pivot:

Dimensions: JD_CODUNIQ; JD_NDEVIS; JD_REF_CLIENT

Formules:

Formule pour les devis: aggr(NODISTINCT avg(JD_PX_TOTAL),JD_NDEVIS)

Formule pour les clients: aggr(NODISTINCT avg(JD_PX_TOTAL), JD_REF_CLIENT)

Not applicable
Author

Voici ce que j'ai utilisé:

if(count({<JD_DATE=, JD_NDEVIS=P(JD_NDEVIS), JD_NVARIANT_FABR={1}>} JD_CODUNIQ) = count ({<JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_CODUNIQ),

  (

  if(Dimensionality()=3, aggr(NODISTINCT avg({<JD_NVARIANT_FABR={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL), JD_NDEVIS),

  if(Dimensionality()=2, aggr(NODISTINCT avg({<JD_NVARIANT_FABR={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL), JD_NDEVIS),

  if(Dimensionality()=1, aggr(NODISTINCT avg({<JD_NVARIANT_FABR={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL), JD_CODE_REP))))

  ),

  (

  if(Dimensionality()=3, aggr(NODISTINCT avg({<JD_NVARIANT_COMM={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL),JD_NDEVIS),

  if(Dimensionality()=2, aggr(NODISTINCT avg({<JD_NVARIANT_COMM={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL), JD_NDEVIS),

  if(Dimensionality()=1, aggr(NODISTINCT avg({<JD_NVARIANT_COMM={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL), JD_CODE_REP))))

  )

)

Mais comme ce n'était pas correcte, j'ai essayé avec ceci (la dernière dimension n'est pas juste), mais ça ne fonctionne pas non plus 😕

if(count({<JD_DATE=, JD_NDEVIS=P(JD_NDEVIS), JD_NVARIANT_FABR={1}>} JD_CODUNIQ) = count ({<JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_CODUNIQ),

  (

  if(Dimensionality()=3, aggr(NODISTINCT avg({<JD_NVARIANT_FABR={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL), JD_NDEVIS),

  if(Dimensionality()=2, aggr(avg(aggr(NODISTINCT avg({<JD_NVARIANT_FABR={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL), JD_NDEVIS)), JD_REF_CLIENT),

  if(Dimensionality()=1, aggr(NODISTINCT avg({<JD_NVARIANT_FABR={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL), JD_CODE_REP))))

  ),

  (

  if(Dimensionality()=3, aggr(NODISTINCT avg({<JD_NVARIANT_COMM={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL),JD_NDEVIS),

  if(Dimensionality()=2, aggr(avg(aggr(NODISTINCT avg({<JD_NVARIANT_COMM={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL), JD_NDEVIS)), JD_REF_CLIENT),

  if(Dimensionality()=1, aggr(NODISTINCT avg({<JD_NVARIANT_COMM={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL), JD_CODE_REP))))

  )

)