Skip to main content
Announcements
Live today at 11 AM ET. Get your questions about Qlik Connect answered, or just listen in. SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
magnamaitre
Contributor III
Contributor III

Calcul en fonction du mois

Bonjour, je débute dans Qlikview et je suis confronté à un petit problème.

En gros j'ai une somme : j'additionne des jours acquis =sum(NB_JourAcquis)

Seulement je voudrais en fonction de l'utilisateur donc du "$" (la sélection active) gérer mon addition selon cette règle :

               de juin à mai une personne gagne 2.08 jours donc au mois de mai elle aurait 2.08 * 12. Mais au mois de juin elle obtient uniquement 2.08 jours.


je sais que je peux faire {$<Année={$(=Only(Année)-1)},Mois={"<=$(=max(Mois))"}>} qui me permet d'obtenir l'année précédente jusqu'au mois Maximum.

Comment je peux faire pour par exemple avoir l'année précédente à partir du mois de juin jusqu'au mois en cours? svp

Merci d'avance.

Jordan Smagghe

Labels (1)
1 Solution

Accepted Solutions
magnamaitre
Contributor III
Contributor III
Author

Bonjour à tous, j'ai fais comme ceci, j'ai crée une expression nb jours acquis dans laquelle je fais ça :

//Si juin,juil,aout,sept,oct,nov ou dec est selectionné.

=If(GetFieldSelections(Mois)='juin'or GetFieldSelections(Mois)='juil.'or GetFieldSelections(Mois)='août'or GetFieldSelections(Mois)='sept.' or

  GetFieldSelections(Mois)='oct.'or GetFieldSelections(Mois)='nov.'or GetFieldSelections(Mois)='déc.',

//On fait la somme du nbrjcpacquis pour l'année en cours de tous les mois - janv, fevrier, mars, avril, mai.

  Sum({$<Année = {$(=Only(Année))}, Mois={"<= $(=max(Mois))"}-{'janv.'}-{'févr.'}-{'mars'}-{'avr.'}-{'mai'}>}[NBRJCPACQUIS]*(Pourc_Ventilation2/100)*(Pourc_Ventilation/100)),

//Sinon on fait la somme de l'année - 1 du moi de juin juil aout setp oct nov dec.

  Sum({$<Année = {$(=max(Année)-1)}, Mois={'juin'}+{'juil.'}+{'août'}+{'sept.'}+{'oct.'}+{'nov.'}+{'déc.'}>}[NBRJCPACQUIS]*(Pourc_Ventilation2/100)*(Pourc_Ventilation/100))+

  // + sum de l'année en cours - les mois de juin juil aout sept oct nov dec.

  Sum({$<Année = {$(=max(Année))}, Mois={"<= $(=max(Mois))"}-{'juin'}-{'juil.'}-{'août'}-{'sept.'}-{'oct.'}-{'nov.'}-{'déc.'}>}[NBRJCPACQUIS]*(Pourc_Ventilation2/100)*(Pourc_Ventilation/100)))

Le soucis c'est que le chiffre que j'obtient est multiplié par le nb de jour du mois. Je sais comment diviser par le nb de jour du mois mais cela fonctionne uniquement pour le mois de juin dès que je serais en juillet, il saura le faire pour juillet mais plus pour juin.

Comment faire?

Je voudrais faire:

Sum({$<Année = {$(=Only(Année))}, Mois={"<= $(=max(Mois))"}-{'janv.'}-{'févr.'}-{'mars'}-{'avr.'}-{'mai'}>}[NBRJCPACQUIS]*(Pourc_Ventilation2/100)*(Pourc_Ventilation/100)/Count([Période]),

mais lorsque j'affiche mon tableau j'ai l'erreur "Nested aggregation not allowed"

Merci d'avance.

Jordan

View solution in original post

7 Replies
christophebrault
Specialist
Specialist

Bonjour,

ma réponse rapide, un exemple serait plus parlant ...

Dans ton application, si tu a une table calendrier (Master Calendar), l'idée est de créer un champs AnnéeCongé, qui démarre en Juin et termine en mai et de changer le numéro de la periode pour l'utiliser dans l'expression.

En gros dans le calendrier tu fais :

if( num(month(DATE))>=6,year(DATE)+1,year(DATE) as AnnéeCongé,

Et tu peux utiliser ce champs dans le set analysis

Inscrivez vous à ma Newletter Qlik
DoNotMissQlik- Connect with me on Linkedin
flochi75
Creator III
Creator III

Bonjour Jordan,

tu peux essayer ceci :

Dans le début du script, vous trouvez

SET FirstMonthOfYear = 1;

Changez cela en

SET FirstMonthOfYear = 6

Juin devrait être le Mois n°1, juillet le N°2, etc

ta formule fonctionnerai t'elle ainsi ?

FLO

magnamaitre
Contributor III
Contributor III
Author

Bonjour Christophe, merci pour ta réponse.

lorsque j'applique j'ajoute à ma table calendrier ce que tu m'as donné :

Calendrier:

LOAD *,

  if( num(month(Date))>=6,year(Date)+1,year(Date)) as AnnéeCongé

FROM

$(QVD_TRANSFO_DIR)Calendrier.QVD

(qvd);

mais il me dit que "Date" est introuvable.

J'ai essayé de remplacer Date par un champ de ma table soit Date Calendrier et il me dit qu'il ne trouve pas non plus.

Je vais continuer de chercher.

Merci d'avance pour ta réponse.

magnamaitre
Contributor III
Contributor III
Author

Bonjour Florent,

merci de ta réponse.

J'ai une question cependant, es ce que le fait de faire SET FirstMonthOfYear = 6; pourrait influencer le reste de mon application Qlikview?

C'est à dire, es ce que cela va influence les traitements qui sont déjà fait et mis à jours tout les jours.

Merci d'avance pour ta réponse

Jordan

magnamaitre
Contributor III
Contributor III
Author

Bonjour, pour vous expliquer un peu plus j'ai tenté de réaliser l'expression que je voudrais avoir :

=If(GetFieldSelections(Mois)='juin'or GetFieldSelections(Mois)='juil.'or GetFieldSelections(Mois)='août'or GetFieldSelections(Mois)='sept.' or

  GetFieldSelections(Mois)='oct.'or GetFieldSelections(Mois)='nov.'or GetFieldSelections(Mois)='déc.',

  sum({$<Année = {$(=Only(Année))}, Mois= {">=juin <=Only(Mois)"}>}[NBRJCPACQUIS]),

  sum({$<Année = {">=Only(Année)-1 <=Only(Année)"}, Mois= {">=juin <=Only(Mois)"}>}[NBRJCPACQUIS]))

Si le mois est juin, juil, aout, sept, oct, nov ou dec : je fais la somme des jours acquis pour l'année en cours du mois de juin au mois actuel.

Sinon(donc si j'ai sélectionné janv, fev, mars, avril, mai) je fais la somme des jours acquis pour l'année -1 à l'année en cours pour les mois de juin de l'année précédente aux mois actuel de l'année actuel.

Mais ça fonctionne pas... j'ai du faire des erreurs ^^.

Qu'en pensez vous de cette manière de faire, y aurait il un moyen que ça fonctionne? Et quels sont mes erreurs?

Merci d'avance

Cordialement

Jordan

flochi75
Creator III
Creator III

en fait, pour l’ensemble de ton appli le 1er mois de l'année sera juin...

magnamaitre
Contributor III
Contributor III
Author

Bonjour à tous, j'ai fais comme ceci, j'ai crée une expression nb jours acquis dans laquelle je fais ça :

//Si juin,juil,aout,sept,oct,nov ou dec est selectionné.

=If(GetFieldSelections(Mois)='juin'or GetFieldSelections(Mois)='juil.'or GetFieldSelections(Mois)='août'or GetFieldSelections(Mois)='sept.' or

  GetFieldSelections(Mois)='oct.'or GetFieldSelections(Mois)='nov.'or GetFieldSelections(Mois)='déc.',

//On fait la somme du nbrjcpacquis pour l'année en cours de tous les mois - janv, fevrier, mars, avril, mai.

  Sum({$<Année = {$(=Only(Année))}, Mois={"<= $(=max(Mois))"}-{'janv.'}-{'févr.'}-{'mars'}-{'avr.'}-{'mai'}>}[NBRJCPACQUIS]*(Pourc_Ventilation2/100)*(Pourc_Ventilation/100)),

//Sinon on fait la somme de l'année - 1 du moi de juin juil aout setp oct nov dec.

  Sum({$<Année = {$(=max(Année)-1)}, Mois={'juin'}+{'juil.'}+{'août'}+{'sept.'}+{'oct.'}+{'nov.'}+{'déc.'}>}[NBRJCPACQUIS]*(Pourc_Ventilation2/100)*(Pourc_Ventilation/100))+

  // + sum de l'année en cours - les mois de juin juil aout sept oct nov dec.

  Sum({$<Année = {$(=max(Année))}, Mois={"<= $(=max(Mois))"}-{'juin'}-{'juil.'}-{'août'}-{'sept.'}-{'oct.'}-{'nov.'}-{'déc.'}>}[NBRJCPACQUIS]*(Pourc_Ventilation2/100)*(Pourc_Ventilation/100)))

Le soucis c'est que le chiffre que j'obtient est multiplié par le nb de jour du mois. Je sais comment diviser par le nb de jour du mois mais cela fonctionne uniquement pour le mois de juin dès que je serais en juillet, il saura le faire pour juillet mais plus pour juin.

Comment faire?

Je voudrais faire:

Sum({$<Année = {$(=Only(Année))}, Mois={"<= $(=max(Mois))"}-{'janv.'}-{'févr.'}-{'mars'}-{'avr.'}-{'mai'}>}[NBRJCPACQUIS]*(Pourc_Ventilation2/100)*(Pourc_Ventilation/100)/Count([Période]),

mais lorsque j'affiche mon tableau j'ai l'erreur "Nested aggregation not allowed"

Merci d'avance.

Jordan