12 Replies Latest reply: Nov 3, 2014 11:37 AM by SOULEIMANE BELARIBI RSS

    Calcul de 2 champs dans tables différentes

      Bonjour,

      Je souhaite calculer un champ de la table TableOccupations1 avec un champ de la table TableOccupations2 mais je n'arrive pas à trouver le bon code, j'en suis arrivé là:

       

      TableOccupations1:

      SQL SELECT CODE as IntervenantTO,

          HOURCOST as CoutHeureTO,

          ID as IDTECHNICIANTO

      FROM CS02."CSRE_TECHNICIAN";

      TableOccupations2:

      SQL SELECT "HOURTYPE_ID" as IDHOURTYPEIDTO,

          ID as IDTECHRATETO,

          RATEHOURTYPE as RATEHOURTYPETO,

          "TECHNICIAN_ID" as IDTECHNICIANTO,

          HOURCOST resident TableOccupations1,

          (HOURCOST*RATEHOURTYPE) as PointagTO

      FROM CS02."CSRE_TECHRATE";

       

      Quelqu'un peut m'aider SVP?

       

      Merci,

        • Re: Calcul de 2 champs dans tables différentes

          Bonjour,

           

          Il me semble qu'il faudrait charger les deux tables séparemment avant de les travailler pour obtenir la table souhaitée.

           

          Quelles champs voulez-vous obtenir au final?

            • Re: Calcul de 2 champs dans tables différentes

              Je voudrais obtenir ce champ calculé (HOURCOST*RATEHOURTYPE) dont chacun est dans une table différente,

               

              Merci,

                • Re: Calcul de 2 champs dans tables différentes

                  Est-ce que cela conviendrai? Je ne l'ai pas testé.

                   

                  TableOccupations1:

                  SQL SELECT CODE as IntervenantTO,

                      HOURCOST as CoutHeureTO,

                      ID as IDTECHNICIANTO

                  FROM CS02."CSRE_TECHNICIAN";

                   

                   

                  Temp_TableOccupations2:

                  SQL SELECT "HOURTYPE_ID" as IDHOURTYPEIDTO,

                      ID as IDTECHRATETO,

                      RATEHOURTYPE as RATEHOURTYPETO,

                      "TECHNICIAN_ID" as IDTECHNICIANTO,

                  FROM CS02."CSRE_TECHRATE";

                   

                  TableOccupations2:

                  LOAD * Resident Temp_TableOccupations2;

                  join

                  LOAD * Resident TableOccupations1;

                   

                  Table_Calculee:

                  LOAD

                             IDTECHNICIANTO,

                             IDHOURTYPEIDTO,

                             IDTECHRATETO,

                             CoutHeureTO,

                             CoutHeureTO * RATEHOURTYPETO as PointagTO

                  Resident TableOccupations2;

              • Re: Calcul de 2 champs dans tables différentes
                anthony delmeire

                Bonjour,

                tu pourrais essayer cela:

                 

                Tmp_TableOccupations:

                SQL SELECT HOURTYPE_ID as IDHOURTYPEIDTO,    

                     ID as IDTECHRATETO,    

                     RATEHOURTYPE as RATEHOURTYPETO,    

                     TECHNICIAN_ID as IDTECHNICIANTO

                FROM CS02."CSRE_TECHRATE";

                 

                JOIN (Tmp_TableOccupations)

                SQL SELECT CODE as IntervenantTO,    

                     HOURCOST,    

                     ID as IDTECHNICIANTO

                FROM CS02."CSRE_TECHNICIAN";

                 

                TableOccupations:

                NOCONCATENATE

                LOAD IDTECHNICIANTO,

                     IDHOURTYPEIDTO,    

                     IDTECHRATETO,    

                     RATEHOURTYPETO,    

                     HOURCOST,    

                     (HOURCOST*RATEHOURTYPE) as PointagTO

                RESIDENT Tmp_TableOccupations;

                 

                DROP TABLE Tmp_TableOccupations;

                • Re: Calcul de 2 champs dans tables différentes
                  Yves Ndjoli

                  Bonjour,

                   

                  pour pouvoir utiliser un champs du table 1 dans le tableau 2, il fraudra que les 2 tables aient un champs avec le même nom:

                   

                  par exemple:

                   

                  Tableau1:

                  A,

                  B,

                  D

                  FROM CS02."CSRE_TECHNICIAN";

                   

                  //Tableau2 temporaire, avec le champs commun tu introduis le champs du tableau 1 dans le tableau2 ceci grâce à la fonction left join

                  TempTableau2:

                  A,

                  X,

                  Y

                  FROM CS02."CSRE_TECHRATE";

                   

                  left join

                  load

                  A,

                  D

                  resident Tableau1

                   

                  //Tableau 2 final

                  Tableau2:

                  non concatenate

                  load *,

                  D*Y as ChampUtilisé

                  resident TempTableau2;

                   

                  drop TempTableau2;

                   

                   

                  Si tu as des questions, n'existent pas à les poser, j'espère que l'explication est clair

                    • Re: Calcul de 2 champs dans tables différentes

                      Merci pour ces explications je crois avoir compris le mécanisme alors je me lance dans un calcul supplémentaire avec le champ d'une autre table par ceui déjà obtenu, et ça ne marche pas, donc voilà ce que j'ai écrit :

                       

                      Tmp_TableOccupations:

                      SQL SELECT HOURTYPE_ID as IDHOURTYPEIDTO,   

                           ID as IDTECHRATETO,   

                           RATEHOURTYPE as RATEHOURTYPETO,   

                           TECHNICIAN_ID as IDTECHNICIANTO

                      FROM CS02."CSRE_TECHRATE";

                       

                      JOIN (Tmp_TableOccupations)

                      SQL SELECT CODE as IntervenantTO,   

                           HOURCOST as HOURCOSTTO,   

                           ID as IDTECHNICIANTO

                      FROM CS02."CSRE_TECHNICIAN";

                       

                      TableOccupations:

                      LOAD IDTECHNICIANTO,

                           IDHOURTYPEIDTO,   

                           IDTECHRATETO,   

                           RATEHOURTYPETO,   

                           HOURCOSTTO,   

                           (HOURCOSTTO*RATEHOURTYPETO) as PointageTO

                      RESIDENT Tmp_TableOccupations;

                       

                      DROP TABLE Tmp_TableOccupations;

                       

                       

                      Tmp_TableCoutPointage:

                      SQL SELECT DURATION as TempsOccupTO,

                                "TECHNICIAN_ID" as IDTECHNICIANTO

                      FROM CS02."CSWO_OCCUPATION";

                       

                       

                      JOIN (Tmp_TableCoutPointage)

                      LOAD IDTECHNICIANTO,

                           PointageTO

                      RESIDENT TableOccupations;

                       

                       

                      TableCoutPointage:

                      LOAD IDTECHNICIANTO,

                           PointageTO*TempsOccupTO

                      RESIDENT Tmp_TableCoutPointage;

                       

                       

                      DROP TABLE Tmp_TableCoutPointage;

                       

                      Merci pour votre aide,

                    • Re: Calcul de 2 champs dans tables différentes
                      anthony delmeire

                      et voila!

                       

                      Tmp_TableOccupations:

                      SQL SELECT HOURTYPE_ID as IDHOURTYPEIDTO,    

                           ID as IDTECHRATETO,    

                           RATEHOURTYPE as RATEHOURTYPETO,    

                           TECHNICIAN_ID as IDTECHNICIANTO

                      FROM CS02."CSRE_TECHRATE";

                       

                      JOIN (Tmp_TableOccupations)

                      SQL SELECT CODE as IntervenantTO,    

                           HOURCOST,    

                           ID as IDTECHNICIANTO

                      FROM CS02."CSRE_TECHNICIAN";

                       

                      JOIN (Tmp_TableOccupations)

                      SQL SELECT DURATION as TempsOccupTO,

                                "TECHNICIAN_ID" as IDTECHNICIANTO

                      FROM CS02."CSWO_OCCUPATION";

                       

                      TableOccupations:

                      NOCONCATENATE

                      LOAD IDTECHNICIANTO,

                      //     IDHOURTYPEIDTO,    

                      //     IDTECHRATETO,    

                      //     RATEHOURTYPETO,    

                      //     HOURCOST,

                      //     PointageTO,  

                           (HOURCOST*RATEHOURTYPETO*TempsOccupTO) as  Result

                      RESIDENT Tmp_TableOccupations;

                       

                      DROP TABLE Tmp_TableOccupations;

                      • Re: Calcul de 2 champs dans tables différentes

                        Bonjour,

                         

                        Je souhaiterais créer un champ a partir de deux table : la table "TABLES" et la table "ARTICLES",  comme cela:

                        ISNULL((SELECT TA.TBL_LIB FROM TABLES TA WHERE TA.TBL_ID = 'FA4' AND TA.TBL_CODE = A.FA4_CODE), '') AS 'C4 Article'

                        j'ai fait ça mais ça ne marche pas, qu'est ce que je dois mettre entre parenthèses pour créer le champ C4 ARTICLE?

                         

                        Tmp_TableArticles:

                        SQL SELECT     ART_CODE,

                                    FA4_CODE AS ID

                        FROM ICP.dbo.ARTICLES;

                         

                        JOIN (Tmp_TableArticles)

                         

                        SQL SELECT TBL_ID,

                                   TBL_CODE AS ID,

                                   TBL_LIB

                        FROM ICP.dbo.TABLES

                        WHERE TBL_ID = 'FA4';

                         

                        TableARTICLES:

                        NOCONCATENATE

                        LOAD ART_CODE,

                             FA4_CODE,

                             TBL_ID,

                             TBL_CODE,

                             TBL_LIB

                            ISNULL(IF(Qu`\est ce que je dois mettre ici) as C4 Article

                         

                        RESIDENT Tmp_TableArticles;

                         

                        DROP TABLE Tmp_TableArticles;

                         

                        Je vous remercie par avance.