15 Replies Latest reply: Feb 22, 2016 10:33 AM by Didier DELANSAY RSS

    Somme partiel et total

    Maurice ludo

      Bonjour,

      le montant commandé afficher 37635.20 est la somme de toutes les lignes alors que moi je voudrais afficher le montant unitaire de chaque ligne (15*0*.52),

      comment je peux faire svp, je voudrais que le montant receptionnee affiche  la somme de total des ligne sur une période définie

        • Re: Somme partiel et total
          Didier DELANSAY

          Bonjour,

           

          Est-ce que le prix total est dans ta table et est-ce que le prix unitaire l'est également ?

           

          Normalement on peut gérer ce type de situation avec une fonction de type aggr().

           

          A défaut, peux-tu joindre ta table sous format Excel ?

          Didier

          • Re: Somme partiel et total
            Sunny Talwar

            Do you have a sample file you can share with required output?

            • Re: Somme partiel et total
              Maurice ludo

              yes this is the file with the result required output, if you like i can send you the QVD file commande.jpg

                • Re: Somme partiel et total
                  Didier DELANSAY

                  Bonjour,

                   

                  D'après ce que je remarque, il faut faudra travailler avec la zone "DELIVERY_DATE" car vous n'avez pas de clé unique "KEY UNIQUE".

                   

                  Pour en construire une, je vous préconise de la créer au chargement de votre table, de la manière suivante:

                  LOAD PURCH_DOC + DELIVERY_DATE as key_purch_doc

                  ou hash128(PURCH_DOC + DELIVERY_DATE) as as key_purch_doc; ce qui la rend cryptée.(pas utile)

                   

                  Ensuite, dans la formule vous pourrez utiliser la fonction : =sum(aggr(sum montant), key_purch)

                   

                • Re: Somme partiel et total
                  Didier DELANSAY

                  Est-ce le résultat attendu :

                  Voici le résultat de la table

                   

                  Et le script de chargement:

                  fic_tmp:
                  load * inline [
                  COMPANY, PURCH_DOC, DELIVERY_DATE, AMOUNT

                  GST-BRU, C8140061, 20160307, 1233,69
                  GST-BRU, C8140061, 20140430, 1593,52
                  GST-BRU, C8140061, 20141231, 1593,52
                  GST-BRU, C8140061, 20150131, 1593,52
                  GST-BRU, C8140061, 20150228, 1593,52
                  GST-BRU, C8140061, 20150331, 1593,52
                  GST-BRU, C8140061, 20150430, 1593,52
                  GST-BRU, C8140061, 20150531, 1593,52
                  GST-BRU, C8140061, 20150630, 1593,52
                  GST-BRU, C8140061, 20150731, 1593,52
                  GST-BRU, C8140061, 20150831, 1593,52
                  GST-BRU, C8140061, 20160131, 1593,52
                  GST-BRU, C8140061, 20160229, 1593,52
                  GST-BRU, C8140061, 20160331, 359,83

                  ]
                  ;


                  fic:

                  load PURCH_DOC & '-' & DELIVERY_DATE as KEY_PURCH_DOC,
                  COMPANY,
                  PURCH_DOC,
                  DELIVERY_DATE,
                  left(DELIVERY_DATE, 4) as YEAR_DELIVERY_DATE,
                  AMOUNT
                  resident fic_tmp;


                  drop  table  fic_tmp; 

                  En espérant que çà réponde à ton besoin.

                  • Re: Somme partiel et total
                    Didier DELANSAY

                    Pour la gestion des dates voici un exemple que j'utilise au quotidien.

                    Les variables sont celles incluse dans les calendrier.

                    Pour info, j'utilise aussi un curseur basé sur la date (Les usr aiment bien)

                    = sum(
                    {$<

                    date_comptabilisation  = {">=$(=var_date_debut_collecte)"} * {"<=$(=var_date_fin_collecte)"}
                    >}

                    montant_ht
                    )

                      • Re: Somme partiel et total
                        Maurice ludo

                        merci Dedier,

                        c'est ce que j'ai fait, j'ai creer deux variable date min et date max, mais je n'arrive pas a le mettre en place dans qlikview coté restitution

                        // Définir les Dates Min et Max

                        Let vMinDate = Num(Makedate(2008,1,1));

                        Let vMaxDate = Num(Makedate(2020,1,1));

                         

                         

                        // Générer toutes les dates possibles entre la date Min et la Date Max

                        ChampDate:

                        LOAD

                        date($(vMinDate)+IterNo()-1) AS MaDate

                        AUTOGENERATE (1)

                        WHILE $(vMinDate)+IterNo()-1<= $(vMaxDate);

                         

                         

                         

                         

                        // Créer une table Calendrier qui va contenir les différentes représentations des dates

                        Calendrier:

                        LOAD

                        MaDate AS EXP_DELIVERY_DATE,

                        Year(MaDate) AS Year,

                        'T ' & Num(Ceil(Month(MaDate)/3),'(ROM)0') AS Trimestre,

                        Month(MaDate) as Month,

                        MonthEnd(MaDate)as DateFinMois,

                        Week(MaDate) AS Semaine,

                        Weekday(MaDate) AS JourSemaine,

                        Day(MaDate) AS Jour

                         

                        RESIDENT ChampDate;

                         

                         

                        //supprimer la table ChampDate

                        DROP TABLE ChampDate;

                         

                        Calen.JPG

                      • Re: Somme partiel et total
                        Didier DELANSAY

                        Bonjour,

                         

                        J'ai du mal a comprendre ce que vous voulez faire.

                        La gestion  des dates permet uniquement de borner.

                        Vous pouvez utiliser le calendrier pour charger les variables, mais ce n'est pas utile, car les dates sont certainement dans la table.

                        Dans mon exemple, la variable est chargée à partir des dates minimum et maximum d'une table d'évènement :

                        =min(date_evenement)  et =max(date_evenement)

                         

                        Dans votre exemple, il y a une ou plusieurs formules sous-jacentes. Peut-être là que vous rencontrez un problème ?

                          • Re: Somme partiel et total
                            Maurice ludo

                            dans la colonne de dimension EXP_DELIVERY_DATE je voudrais afficher que la dernière date de la ligne dans mon exemple au lieux d'afficher

                            31/01/2015

                            28/02/2015

                            .

                            .

                            31/05/2015

                            vu que le montant commandé est le meme pour toutes les lignes et le montant réceptionné est la somme de toutes les lignes

                            voici un exemple

                            Sans titre.jpg

                            merci

                          • Re: Somme partiel et total
                            Didier DELANSAY

                            Si c'est la dernière date de chaque mois que tu souhaites, le mieux est de la charger au load de la table.

                             

                            Si c'est la date maximale d'une commande du mois:

                            Soit par une fonction de type max, dans ce cas tu dois définir une autre table qui serait chargé via un "resident" et qui contiendrai une clé de liaison.

                             

                            Si c'est la date maximale du mois (exemple le 29/02/2016, le 31/03/NNNNN), il te faudra la construire avec une fonction de type '"Makedate() ou MonthEnd()" et avec le mois et l'année contenues dans la table et via un "resident",  une autre table (comme précédemment).

                             

                            Une autre méthode, mais que je n'aime pas car plus lente, consiste à intégrer dans les formules (expression ou dimension) une clause if qui gère les dates max.

                            Note que la construction des dernier jours peux s'effectuer directement dans l'onglet "dimension"

                             

                            Tout dépend du volume à traiter.