Inclusion de sous-totaux

Comment :

Référence :

Vous pouvez utiliser les commandes SUBTOTAL et SUB-TOTAL pour additionner des valeurs individuelles, telles que des colonnes de nombres, chaque fois qu'un champ de tri donné change de valeur.

SUB-TOTAL et SUBTOTAL produisent les deux des totaux généraux. Vous pouvez supprimer les totaux généraux à l'aide de la commande NOTOTAL. Consultez Suppression de totaux généraux.

Le sous-total est calculé chaque fois que le champ BY change de valeur ou, si des critères WHERE sont appliqués au champ BY, chaque fois que les conditions WHEN sont remplies.

Une expression BY, ACROSS, ou ON est requise pour initialiser la syntaxe.


Haut de page

x
Syntaxe : Créer des sous-totaux
{BY|ON} fieldname {SUB-TOTAL|SUBTOTAL} [MULTILINES]
      [field1 [AND] field2...] [AS 'text'][WHEN expression;]

où :

fieldname
Doit s'agir du nom d'un champ dans une phrase de tri. Une expression BY peut inclure une commande récapitulative. Le nombre de champs à sous-totaliser multiplié par le nombre de niveaux de sous-totaux dans le nombre de champs d'affichage autorisés pour la requête. Pour plus de détails sur la détermination du nombre maximal de champs d'affichage autorisés dans une requête, consultez Affichage de données de rapport.
SUB-TOTAL|SUBTOTAL
SUB-TOTAL affiche les sous-totaux des valeurs numériques lorsque le champ BY|ON change de valeur, et pour tous les champs de tri de niveau supérieur lorsqu'ils changent de valeur.

SUBTOTAL n'affiche un sous-total que lorsque le champ de tri spécifié change de valeur.

MULTILINES
Supprime l'impression d'une ligne de sous-total pour chaque sort break n'ayant qu'une ligne de détail, comme la valeur de sous-total est égale à cette valeur unique. MULTI-LINES est synonyme de MULTILINES. La commande MULTILINES n'est pas prise en charge avec les champs de tri horizontal (ACROSS).
field1, field2, ...
Indique une liste de champs particuliers à sous-totaliser. Cette liste remplace la valeur par défaut, qui comprend tous les champs d'affichage numériques.

Vous pouvez utiliser le caractère générique astérisque (*) au lieu d'une liste de champs pour indiquer que tous les champs, numériques et alphanumériques, devraient être inclus sur les lignes récapitulatives. Ceci est nécessaire si vous voulez afficher des colonnes alphanumériques sur des lignes récapitulatives lorsque SET SUMMARYLINES est défini à OLD. Pour les autres valeurs de SUMMARYLINES, vous pouvez utiliser l'astérisque pour afficher toutes les colonnes ou référencer les colonnes spécifiques que vous souhaitez afficher.

AS 'text'
Vous permet de spécifier un autre label. Pour plus d'informations, consultez Utilisation d'en-têtes, pieds de page, titres et étiquettes.
WHEN expression
Spécifie l'affichage conditionnelle de sous-totaux comme le détermine une expression booléenne. L'expression doit terminer par un point virgule.

Haut de page

x
Syntaxe : Contrôler l'emplacement des lignes récapitulatives
SET SUBTOTALS = {ABOVE|BELOW}

où :

Au-dessus
Place les lignes récapitulatives au-dessus des lignes de détail et affiche les valeurs de critères de tri sur chaque ligne de détail de la sortie de rapport.
Au-dessous
Place les lignes récapitulatives en-dessous des lignes de détail. BELOW est la valeur par défaut.

Remarque : SET SUBTOTALS = ABOVE n'est pas pris en charge avec le format EXL2K FORMULA.



Exemple : Placer les sous-totaux au-dessus des données

La requête suivante contre la source de données EMPLOYEE totalise les valeurs de déduction et les salaires bruts par service, par code prélèvement, et par nom de famille. Puis, la requête génère les sous-totaux des salaires bruts et de déduction pour chaque service. La requête suivante place les sous-totaux en-dessous des lignes de détail (par défaut) :

TABLE FILE EMPLOYEE               
SUM DED_AMT GROSS                 
BY DEPARTMENT                     
BY DED_CODE                       
  BY LAST_NAME                    
WHERE BANK_ACCT NE 0              
WHERE DED_CODE EQ 'FICA' OR 'CITY'
  ON DEPARTMENT SUBTOTAL          
  ON TABLE SET SUBTOTALS BELOW    
  ON TABLE SET PAGE NOPAGE        
END

La sortie est :

DEPARTMENT  DED_CODE  LAST_NAME                DED_AMT            GROSS
----------  --------  ---------                -------            -----
MIS         CITY      BLACKWOOD                 $31.76        $9,075.00
                      CROSS                     $82.69       $22,013.77
                      JONES                     $14.01        $6,099.50
            FICA      BLACKWOOD              $2,223.37        $9,075.00
                      CROSS                  $5,788.01       $22,013.77
                      JONES                    $980.64        $6,099.50
                                                                       
*TOTAL DEPARTMENT MIS                        $9,120.47       $74,376.54
                                                                       
PRODUCTION  CITY      BANNING                    $7.42        $2,475.00
                      IRVING                    $60.24       $17,094.00
                      MCKNIGHT                  $18.26        $9,129.99
            FICA      BANNING                  $519.75        $2,475.00
                      IRVING                 $4,216.53       $17,094.00
                      MCKNIGHT               $1,278.21        $9,129.99
                                                                       
*TOTAL DEPARTMENT PRODUCTION                 $6,100.40       $57,397.98
                                                                       
                                                                       
TOTAL                                       $15,220.88      $131,774.52

Voici un exemple de la même requête, mais avec les sous-totaux placés au-dessus des lignes de détail :

TABLE FILE EMPLOYEE               
SUM DED_AMT GROSS                 
BY DEPARTMENT                     
BY DED_CODE                       
  BY LAST_NAME                    
WHERE BANK_ACCT NE 0              
WHERE DED_CODE EQ 'FICA' OR 'CITY'
  ON DEPARTMENT SUBTOTAL          
  ON TABLE SET SUBTOTALS ABOVE    
  ON TABLE SET PAGE NOPAGE        
END

Sur la sortie, la ligne de total général apparaît en premier, puis le sous-total du service MIS suivi par les lignes de détail du service MIS, suivies par le sous-total du service PRODUCTION et ses lignes de détail. Notez que tous les critères de tri s'affichent sur chaque ligne de la sortie de rapport :

DEPARTMENT  DED_CODE  LAST_NAME                DED_AMT            GROSS
----------  --------  ---------                -------            -----
TOTAL                                       $15,220.88      $131,774.52
*TOTAL DEPARTMENT MIS                        $9,120.47       $74,376.54
                                                                       
MIS         CITY      BLACKWOOD                 $31.76        $9,075.00
MIS         CITY      CROSS                     $82.69       $22,013.77
MIS         CITY      JONES                     $14.01        $6,099.50
MIS         FICA      BLACKWOOD              $2,223.37        $9,075.00
MIS         FICA      CROSS                  $5,788.01       $22,013.77
MIS         FICA      JONES                    $980.64        $6,099.50
                                                                       
*TOTAL DEPARTMENT PRODUCTION                 $6,100.40       $57,397.98
                                                                       
PRODUCTION  CITY      BANNING                    $7.42        $2,475.00
PRODUCTION  CITY      IRVING                    $60.24       $17,094.00
PRODUCTION  CITY      MCKNIGHT                  $18.26        $9,129.99
PRODUCTION  FICA      BANNING                  $519.75        $2,475.00
PRODUCTION  FICA      IRVING                 $4,216.53       $17,094.00
PRODUCTION  FICA      MCKNIGHT               $1,278.21        $9,129.99

Haut de page

x
Référence : Notes sur les sous-totaux


Exemple : Génération de sous-totaux

La requête suivante illustre comment créer un sous-total pour le champ SALES chaque fois que le champ pays change de valeur.

TABLE FILE CAR
SUM AVE.MPG AND SALES AND AVE.RETAIL_COST
BY COUNTRY SUB-TOTAL SALES
BY BODYTYPE
END

La sortie est :

                             AVE           AVE        
COUNTRY     BODYTYPE         MPG    SALES  RETAIL_COST
-------     --------         ----   -----  -----------
ENGLAND     CONVERTIBLE        16       0        8,878
            HARDTOP            25       0        5,100
            SEDAN              10   12000       15,671
                                                      
*TOTAL ENGLAND                      12000             
                                                      
FRANCE      SEDAN              21       0        5,610
                                                      
*TOTAL FRANCE                           0             
                                                      
ITALY       COUPE              11   12400       19,160
            ROADSTER           21   13000        6,820
            SEDAN              21    4800        5,925
*TOTAL ITALY                        30200             
                                                      
JAPAN       SEDAN              14   78030        3,239
                                                      
*TOTAL JAPAN                        78030             
                                                      
W GERMANY   SEDAN              20   88190        9,247
                                                      
*TOTAL W GERMANY                    88190             
                                                      
                                                      
TOTAL                              208420             


Exemple : Comparaison de SUB-TOTAL et SUBTOTAL

La requête suivante illustre comment créer un sous-total pour les champs numériques DED_AMT et GROSS lorsque le champ de service (DEPARTMENT) change de valeur, et pour le critère de tri de niveau supérieur (DED_CODE) lorsqu'il change de valeur.

TABLE FILE EMPLOYEE
SUM DED_AMT GROSS BY DED_CODE BY DEPARTMENT
BY BANK_ACCT
WHERE BANK_ACCT NE 0
ON DEPARTMENT SUB-TOTAL
END

Si vous utilisez SUBTOTAL au lieu de SUB-TOTAL, les totaux des champs DED_AMT et GROSS ne s'affichent que lorsque le champ DEPARTMENT change de valeur.

La première partie de la sortie est :

DED_CODE  DEPARTMENT  BANK_ACCT          DED_AMT            GROSS
--------  ----------  ---------          -------            -----
CITY      MIS          40950036           $14.00        $6,099.50
                      122850108           $31.75        $9,075.00
                      163800144           $82.70       $22,013.75
                                                                 
*TOTAL DEPARTMENT MIS                    $128.45       $37,188.25
                                                                 
          PRODUCTION     160633            $7.42        $2,475.00
                      136500120           $18.25        $9,130.00
                      819000702           $60.20       $17,094.00
                                                                 
*TOTAL DEPARTMENT PRODUCTION              $85.87       $28,699.00
*TOTAL DED_CODE CITY                     $214.32       $65,887.25

La dernière page de sortie est:

DED_CODE  DEPARTMENT  BANK_ACCT          DED_AMT            GROSS
--------  ----------  ---------          -------            -----
STAT      MIS          40950036          $196.13        $6,099.50
                      122850108          $444.65        $9,075.00
                      163800144        $1,157.60       $22,013.75
                                                                 
*TOTAL DEPARTMENT MIS                  $1,798.38       $37,188.25
                                                                 
          PRODUCTION     160633          $103.95        $2,475.00
                      136500120          $255.65        $9,130.00
                      819000702          $843.32       $17,094.00
                                                                 
*TOTAL DEPARTMENT PRODUCTION           $1,202.92       $28,699.00
*TOTAL DED_CODE STAT                   $3,001.30       $65,887.25
                                                                 
                                                                 
TOTAL                                 $41,521.18      $461,210.75

WebFOCUS