Manipulation de valeurs récapitulatives avec des opérateurs préfixe

Dans cette section :

Comment :

Référence :

Vous pouvez employer les commandes SUBTOTAL, SUB-TOTAL, RECOMPUTE et SUMMARIZE au niveau ON TABLE afin de spécifier le type d'opération récapitulative à utiliser pour produire la ligne de total général d'un rapport.

De même, les opérateurs préfixe peuvent être utilisés avec les options récupitulatives SUBTOTAL, SUB-TOTAL, RECOMPUTE et SUMMARIZE aux niveaux de sort break et de total général.

Les opérations préfixe sur les lignes récapitulatives s'effectuent sur les valeurs récupérées, sélectionnées et additionnées qui deviennent les lignes de détails du rapport. Contrairement aux opérations préfixe basés sur les champs, les opérations préfixe ne s'effectuent pas pour chaque enregistrement entrant.

Chaque type d'opération récapitulative a sa propre utilisation, et gère les opérateurs préfixe en fonction du type de données récapitulatives à afficher. Par exemple, l'utilisation de AVE. à un saut de champ de tri génère la moyenne du groupe de tri.

Vous pouvez aussi afficher des champs alphanumériques sur les lignes récapitulatives. Pour ce faire, il faut soit lister explicitement le nom du champ alphanumérique dans la commande récapitulative, soit utiliser un astérisque (*) comme caractère de remplacement pour afficher tous les champs.

Différentes opérations de deux phrases ON pour le même saut de page s'affichent sur la même ligne récapitulative, et permettent une combinaison d'opérateurs sur les lignes récapitulatives. La ligne de total général remplit tous les champs remplis par une commande récapitulative quelconque, même des champs qui ne sont pas spécifiés dans la commande de total général.

Si un même champ est référencé dans plus d'une phrase ON pour le même sort break, la fonction spécifiée dernièrement s'applique.

Les champs numériques supportent les opérateurs préfixe suivants :

Les champs alphanumériques supportent les opérateurs préfixe suivants :


Haut de page

x
Syntaxe : Utiliser des opérateurs préfixe avec des valeurs récapitulatives
{BY|ON} breakfield [AS 'text1'] sumoption [MULTILINES]
        [pref. ] [*|[field1 [[pref2. ] field2 ...]]]
        [AS 'text2'] [WHEN expression;]

Pour remplacer le total général par défaut, utilisez la syntaxe suivante :

ON TABLE sumoption [pref. ][field1 [[pref2. ]field2 ...]] [AS 'text2']

où :

breakfield
est la rupture de tri dont le changement de valeur fait déclencher l'opération récapitulative. Une expression BY peut inclure une commande récapitulative. Lorsque le critère de tri change de valeur, cela déclenche l'opération récapitulative.
sumoption
Peut être l'une des commandes suivantes : SUBTOTAL, SUB-TOTAL, RECOMPUTE, ou SUMMARIZE.
'text1'
Est l'en-tête de colonne à utiliser pour le champ de saut dans la sortie de rapport.
MULTILINES
Empêche l'impression d'une ligne récapitulative pour tout sort break n'ayant qu'une ligne de détail. Notez que MULTILINES empêche la ligne récapitulative même si un opérateur préfixe est utilisé pour spécifier une autre opération pour la ligne récapitulative. MULTI-LINES est un synonyme de MULTILINES. La commande MULTILINES n'est pas supportée avec des champs de tri horizontal (ACROSS).
pref.
Est un opérateur préfixe. Lorsqu'il est spécifié sans liste de champs, l'opérateur préfixe s'applique à toute colonne numérique dans la sortie de rapport et toute colonne numérique est remplie de valeurs sur la ligne récapitulative.
*
Inclut tous les champs d'affichage sur la ligne récapitulative. Si un opérateur préfixe est spécifié, il s'applique à tous les champs. Si l'opérateur préfixe n'est pas supporté avec les champs alphanumériques, ceux-ci ne sont pas compris sur la ligne récapitulative.
[field1 [field2 ... fieldn]]
génère le type d'agrégation spécifié par sumoption pour les champs listés. Si aucun nom de champ n'est listé, la récapitulation est générée pour toute colonne numérique dans la sortie de rapport.
pref. field1 [field2 ... fieldn] [pref2. fieldm ...]
Le premier opérateur préfixe s'applique aux champs field1 jusqu'à fieldn. Le deuxième opérateur préfixe s'applique à fieldm. Seuls les champs spécifiés sont remplis de valeurs sur la ligne récapitulative. Tous les opérateurs préfixe doivent être séparés les uns des autres par un espace. Par exemple :

'text2'
Est le texte qui s'affiche à gauche de la ligne récapitulative.
expression
Est une expression qui détermine si l'opération récapitulative s'effectue à chaque sort break.

Haut de page

x
Référence : Notes d'utilisation pour les opérateurs préfixes récapitulatifs


Exemple : Utilisation d'opérateurs préfixe avec SUBTOTAL

L'exemple suivant utilise des opérateurs préfixe pour calculer :

Notez que la ligne de sous total pour chaque classification ne comprend une valeur que dans la colonne LISTPR, et la ligne de sous total pour chaque catégorie ne comprend une valeur que dans la colonne COPIES. La ligne de total général comprend des valeurs uniquement pour les colonnes pour lesquelles le total général a été calculé. Notez l'espace blanc entre chaque opérateur préfixe et le nom de champ qui le suit :

TABLE FILE MOVIES
PRINT COPIES LISTPR WHOLESALEPR TITLE/A23
  BY RATING
  BY CATEGORY
  WHERE CATEGORY EQ 'CHILDREN' OR 'CLASSIC'
  WHERE RATING   EQ 'G' OR 'NR'
  ON RATING    SUBTOTAL AVE. LISTPR AS '*Ave:  '
  ON CATEGORY  SUBTOTAL SUM. COPIES AS '*Sum:  '
END

La sortie est :

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR  TITLE                  
------  --------  ------  ------  -----------  -----                  
G       CHILDREN       2   44.95        29.99  SHAGGY DOG, THE        
                       2   29.95        12.50  ALICE IN WONDERLAND    
                       3   26.99        12.00  BAMBI                  
                                                                      
*Sum:   CHILDREN       7                                              
                                                                      
        CLASSIC        3   89.95        40.99  GONE WITH THE WIND     
                                                                      
*Sum:   CLASSIC        3                                              
*Ave:   G                  47.96                                      
                                                                      
NR      CHILDREN       1   19.95        10.00  SMURFS, THE            
                       1   19.95         9.75  SCOOBY-DOO-A DOG IN THE
                       1   14.95         7.65  SESAME STREET-BEDTIME S
                       1   14.98         7.99  ROMPER ROOM-ASK MISS MO
                       1   29.95        15.99  SLEEPING BEAUTY        
                                                                      
*Sum:   CHILDREN       5                                              
                                                                      
        CLASSIC        1   24.98        14.99  EAST OF EDEN           
                       3   39.99        20.00  CITIZEN KANE           
                       1   29.95        15.99  CYRANO DE BERGERAC     
                       1   19.99        10.95  MARTY                  
                       2   19.99        10.95  MALTESE FALCON, THE    
                       2   19.95         9.99  ON THE WATERFRONT      
                       2   89.99        40.99  MUTINY ON THE BOUNTY   
                       2   19.99        10.95  PHILADELPHIA STORY, THE
                       2   19.98        10.99  CAT ON A HOT TIN ROOF  
                       2   29.95        15.00  CASABLANCA             
                                                                      
*Sum:   CLASSIC       18                                              
*Ave:   NR                 27.64                                      
                                                                      
                                                                      
TOTAL                 33   31.91


Exemple : Utilisation de SUBTOTAL au saut de page et aux niveaux de total général

L'exemple suivant ajoute la commande ON TABLE SUBTOTAL à la requête présentée dans Utilisation d'opérateurs préfixe avec SUBTOTAL au niveau de la rupture de tri afin de calculer le nombre minimal de copies et le prix courant maximal sur la ligne de total général pour le rapport complet :

TABLE FILE MOVIES                              
PRINT COPIES LISTPR WHOLESALEPR TITLE/A23      
  BY RATING                                    
  BY CATEGORY                                  
  WHERE CATEGORY EQ 'CHILDREN' OR 'CLASSIC'    
  WHERE RATING   EQ 'G' OR 'NR'                
  ON RATING    SUBTOTAL AVE. LISTPR AS '*Ave:  '
  ON CATEGORY  SUBTOTAL SUM. COPIES AS '*Sum:  '
  ON TABLE SUBTOTAL MIN. COPIES MAX. LISTPR
END

La sortie est pareille à celle de la requête précédente, sauf pour la ligne de total général :

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR  TITLE                  
------  --------  ------  ------  -----------  -----                  
G       CHILDREN       2   44.95        29.99  SHAGGY DOG, THE        
                       2   29.95        12.50  ALICE IN WONDERLAND    
                       3   26.99        12.00  BAMBI                  
                                                                      
*Sum:   CHILDREN       7                                              
                                                                      
        CLASSIC        3   89.95        40.99  GONE WITH THE WIND     
                                                                      
*Sum:   CLASSIC        3                                              
*Ave:   G                  47.96                                      
                                                                      
NR      CHILDREN       1   19.95        10.00  SMURFS, THE            
                       1   19.95         9.75  SCOOBY-DOO-A DOG IN THE 
                       1   14.95         7.65  SESAME STREET-BEDTIME S
                       1   14.98         7.99  ROMPER ROOM-ASK MISS MO
                       1   29.95        15.99  SLEEPING BEAUTY        
                                                                      
*Sum:   CHILDREN       5                                              
                                                                      
        CLASSIC        1   24.98        14.99  EAST OF EDEN           
                       3   39.99        20.00  CITIZEN KANE           
                       1   29.95        15.99  CYRANO DE BERGERAC     
                       1   19.99        10.95  MARTY                  
                       2   19.99        10.95  MALTESE FALCON, THE    
                       2   19.95         9.99  ON THE WATERFRONT      
                       2   89.99        40.99  MUTINY ON THE BOUNTY   
                       2   19.99        10.95  PHILADELPHIA STORY, THE
                       2   19.98        10.99  CAT ON A HOT TIN ROOF  
                       2   29.95        15.00  CASABLANCA             
                                                                      
*Sum:   CLASSIC       18                                              
*Ave:   NR                 27.64                                      
                                                                      
                                                                      
TOTAL                  1   89.99


Exemple : Affichage d'un champ alphanumérique sur une ligne récapitulative

La requête suivante affiche la somme du prix courant et la valeur minimale du champ de réalisateur par classification :

TABLE FILE MOVIES
PRINT COPIES LISTPR WHOLESALEPR DIRECTOR
BY RATING
BY CATEGORY
WHERE CATEGORY EQ 'CHILDREN' OR 'CLASSIC'
WHERE RATING   EQ 'G' OR 'NR'
WHERE DIRECTOR NE ' '
ON RATING SUBTOTAL SUM. LISTPR MIN. DIRECTOR AS '*A/N:'
END

La sortie est :

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR  DIRECTOR 
------  --------  ------  ------  -----------  -------- 
G       CHILDREN       2   44.95        29.99  BARTON C.
                       2   29.95        12.50  GEROMINI 
                       3   26.99        12.00  DISNEY W.
        CLASSIC        3   89.95        40.99  FLEMING V
                                                        
*A/N: G                   191.84               BARTON C.
                                                        
NR      CHILDREN       1   29.95        15.99  DISNEY W.
        CLASSIC        1   24.98        14.99  KAZAN E. 
                       3   39.99        20.00  WELLES O.
                       1   29.95        15.99  GORDON M.
                       1   19.99        10.95  MANN D.  
                       2   19.99        10.95  HUSTON J.
                       2   19.95         9.99  KAZAN E. 
                       2   89.99        40.99  MILESTONE L.
                       2   19.99        10.95  CUKOR G.    
                       2   19.98        10.99  BROOKS R.   
                       2   29.95        15.00  CURTIZ M.   
                                                           
*A/N: NR                  344.71               BROOKS R.   
                                                           
                                                           
TOTAL                     536.55               BARTON C.


Exemple : Affichage de tous les champs sur une ligne récapitulative

La requête suivante affiche la somme de tout champ d'affichage sur la ligne de sous total. Comme le champ de réalisateur est alphanumérique, la valeur s'affiche ainsi :

TABLE FILE MOVIES
PRINT COPIES LISTPR WHOLESALEPR DIRECTOR
BY RATING
BY CATEGORY
WHERE CATEGORY EQ 'CHILDREN' OR 'CLASSIC'
WHERE RATING   EQ 'G' OR 'NR'
WHERE DIRECTOR NE ' '
ON RATING SUBTOTAL SUM. * AS '*All:  '
END

La sortie est :

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR  DIRECTOR 
------  --------  ------  ------  -----------  -------- 
G       CHILDREN       2   44.95        29.99  BARTON C.
                       2   29.95        12.50  GEROMINI 
                       3   26.99        12.00  DISNEY W.
        CLASSIC        3   89.95        40.99  FLEMING V
                                                        
*All:   G             10  191.84        95.48  FLEMING V
                                                        
NR      CHILDREN       1   29.95        15.99  DISNEY W.
        CLASSIC        1   24.98        14.99  KAZAN E. 
                       3   39.99        20.00  WELLES O.
                       1   29.95        15.99  GORDON M.
                       1   19.99        10.95  MANN D.  
                       2   19.99        10.95  HUSTON J.
                       2   19.95         9.99  KAZAN E. 
                       2   89.99        40.99  MILESTONE L.
                       2   19.99        10.95  CUKOR G.    
                       2   19.98        10.99  BROOKS R.   
                       2   29.95        15.00  CURTIZ M.   
                                                           
*All:   NR            19  344.71       176.79  CURTIZ M.   
                                                           
                                                           
TOTAL                 29  536.55       272.27  CURTIZ M.

Haut de page

x
Contrôler le traitement des lignes récapitulatives

Comment :

Référence :

Lors du traitement de lignes récapitulatives, vous pouvez contrôler si le traitement par opérateur de préfixe est utilisé et si les commandes SUBTOTAL et RECOMPUTE sont propagées vers la rangée de la somme globale d'un rapport.

Le traitement des lignes récapitulatives avec des opérateurs préfixe diffère du traitement sans opérateurs préfixe au niveau des types d'opérations prises en charge et des champs influencés.

Par défaut, vous ne pouvez pas combiner ces deux styles de traitement dans une requête. De plus, la syntaxe utilisée dans la requête (avec ou sans opérateurs préfixe sur les lignes récapitulatives) détermine quel type de traitement est utilisé.

Une des fonctions du paramètre SUMMARYLINES consiste à vous permettre de combiner des champs avec ou sans opérateurs de préfixe dans les lignes récapitulatives d'une requête. Dans ce cas, le traitement d'opérateur préfixe est utilisé pour toutes les lignes récapitulatives. Les champs sans opérateurs préfixe sont traités comme s'ils ont été spécifiés avec l'opérateur SUM. Le nouveau traitement est requis pour afficher des champs alphanumériques sur les lignes récapitulatives.

Le traitement de rapports utilisant des opérateurs préfixe sur des lignes récapitulatives diffère du traitement sans opérateurs préfixe. Dans certains cas, un style différent de sortie de rapport résulte de chaque type de requête.

Si une commande récapitulative spécifie un nom de champ et une autre commande récapitulative spécifie un deuxième nom de champ :

Si un opérateur préfixe est utilisé dans une commande récapitulative quelconque, le traitement d'opérateur préfixe est requis pour la requête. Il est évident dans la plupart des requêtes quel type de traitement à employer, même si des opérateurs préfixe sont spécifiés dans certaines commandes récapitulatives mais pas dans d'autres.

Cependant, si un opérateur préfixe est rencontré pour la première fois après qu'un nom de champ ait été spécifié dans une commande récapitulative sans opérateur préfixe accompagnant, aucun des deux types de traitement ne peut être implémenté. Dans ce cas, par défaut, le traitement s'arrête et le message d'erreur suivant est généré :

(FOC36376) CANNOT COMBINE SUBTOTAL/RECOMPUTE STYLES WHEN SUMMARYLINES=OLD

Par exemple :

ON RATING SUBTOTAL COPIES AVE. LISTPR

ou

ON RATING SUBTOTAL LISTPR 
ON CATEGORY SUBTOTAL AVE. COPIES

Vous pouvez éliminer ce problème en lançant la commande SET SUMMARYLINES=NEW afin d'indiquer qu'il faut utiliser le traitement d'opérateur préfixe. L'opérateur préfixe SUM. est appliqué alors à tout champ qui n'a pas d'opérateur préfixe.

Le nouveau traitement est requis pour afficher des champs alphanumériques sur les lignes récapitulatives.

La seconde fonction de la commande SET SUMMARYLINES est de faire correspondre le traitement de SUBTOTAL, SUB-TOTAL, SUMMARIZE et RECOMPUTE sur la ligne de la somme globale avec le traitement des sauts de critères de tri. Le paramètre qui invoque ce type de traitement est SET SUMMARYLINES=EXPLICIT.

Lorsque les commandes SUBTOTAL et RECOMPUTE sont utilisées à un niveau de rupture de tri, elles ne se propagent pas vers d'autres sauts de tri. Les commandes SUB-TOTAL et SUMMARIZE se propagent vers tous les sauts de tri de niveaux supérieurs.

Le total général peut être considéré le niveau le plus haut de champ de tri dans une requête. Cependant, par défaut, toutes les options récapitulatives, et non seulement les commandes SUB-TOTAL et SUMMARIZE, se propagent vers le niveau de total général.

La commande SET SUMMARYLINES=EXPLICIT empêche la propagation du sous-total et du recalcul au total général. En plus, si toutes les commandes récapitulatives dans la requête spécifient des listes de champ, seulement les champs spécifiés sont agrégés et s'affichent sur la ligne du total général.

Lorsque SUBTOTAL et RECOMPUTE sont les seules commandes récapitulatives utilisées dans la requête, une ligne de total général n'est créée que si elle est spécifiée explicitement dans la requête par la phrase ON TABLE SUBTOTAL/SUB-TOTAL/RECOMPUTE/SUMMARIZE. Si la phrase ON TABLE spécifie une liste de champs, seulement ces champs-là sont agrégés et s'affichent.

Notez que vous pouvez toujours supprimer la ligne de total général en utilisant la commande ON TABLE NOTOTAL dans la requête.



x
Syntaxe : Contrôler le traitement des lignes récapitulatives
SET SUMMARYLINES = {OLD|NEW|EXPLICIT}

où :

OLD
n'accepte pas de champs récapitulatifs sans et avec des opérateurs de préfixe et propage toutes les opérations récapitulatives vers la ligne de la somme globale. Des champs spécifiés sur des lignes récapitulatives doivent tous avoir des opérateurs préfixe ou doivent tous les exclure. Cette syntaxe détermine quel type de traitement à appliquer. OLD est la valeur par défaut.

Notez que l'opérateur préfixe précédant une liste de noms de champ s'applique à chacun des colonnes de rapport (et, donc, n'est pas considéré un mélange). Vous pouvez spécifier l'opérateur SUM. Opérateur des champs pour lesquels vous souhaitez obtenir un sous-total standard. Cette opération produit la même valeur qui serait générée sans opérateurs préfixe. Des champs alphanumérique ne sont pas compris sur des lignes récapitulatives.

NEW
Propage toutes les opérations récapitulatives à la ligne de total général. Cette valeur utilise le traitement par opérateur préfixe pour toutes les commandes récapitulatives (tous les champs récapitulatifs sans opérateurs préfixes sont traités comme s'ils avaient l'opérateur opérateur). Les champs listés dans une commande récapitulative sont peuplés uniquement sur les lignes récapitulatives créées par cette commande récapitulative-là et sur les lignes récapitulatives créées par la propagation de cette commande récapitulative-là. EXPLICIT supporte l'affichage des champs alphanumériques sur les lignes récapitulatives.

NEW active aussi les opérations récapitulatives sur les colonnes alphanumériques. La valeur alphanumérique affichée sur une ligne SUBTOTAL ou SUB-TOTAL est soit la première ou la dernière valeur alphanumérique au sein du groupe de tri, en fonction de la valeur du paramètre SUMPREFIX. Sur une ligne RECOMPUTE ou SUMMARIZE, les valeurs alphanumériques sont recalculées en utilisant les valeurs récapitulatives de cette ligne.

EXPLICIT
Ne propage pas les commandes SUBTOTAL et RECOMPUTE à la ligne de total général. Cette valeur utilise le traitement par opérateur préfixe pour toutes les commandes récapitulatives (tous les champs récapitulatifs sans opérateurs préfixes sont traités comme s'ils avaient l'opérateur opérateur). Les champs listés dans une commande récapitulative sont peuplés uniquement sur les lignes récapitulatives créées par cette commande récapitulative-là et sur les lignes récapitulatives créées par la propagation de cette commande récapitulative-là. EXPLICIT supporte l'affichage des champs alphanumériques sur les lignes récapitulatives.

Remarque : cette commande n'est pas supportée dans une requête utilisant la syntaxe ON TABLE SET.



x
Référence : Notes d'utilisation pour SET SUMMARYLINES

Par exemple :

TABLE FILE MOVIES 
PRINT COPIES LISTPR WHOLESALEPR
 BY RATING
 BY CATEGORY
 WHERE CATEGORY EQ 'CHILDREN'
 WHERE RATING   EQ 'G'
 ON RATING    SUBTOTAL LISTPR AS '*LIST' 
 ON CATEGORY  SUBTOTAL  COPIES AS '*COPY'
END

Voici la sortie lorsque la commande SUMMARYLINES=OLD demande des sous totaux pour les colonnes COPIES et LISTPR sur les deux sort breaks. WHOLESALEPR n'est référencé dans aucune des deux commandes de sous total (SUBTOTAL) et ne s'affiche pas donc sur une ligne récapitulative.

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR
------  --------  ------  ------  -----------
G       CHILDREN       2   44.95        29.99
                       2   29.95        12.50
                       3   26.99        12.00
 
*COPY CHILDREN         7  101.89
*LIST G                7  101.89
 
 
TOTAL                  7  101.89

Voici la sortie lorsque la commande SUMMARYLINES=NEW demande des sous totaux pour le champ COPIES sur le sort break CATEGORY et pour LISTPR sur le sort break RATING. Les deux colonnes sont remplies sur la ligne de total général. WHOLESALEPR n'est référencé dans aucune des deux commandes de sous total (SUBTOTAL) et ne s'affiche pas donc sur une ligne récapitulative.

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR
------  --------  ------  ------  -----------
G       CHILDREN       2   44.95        29.99
                       2   29.95        12.50
                       3   26.99        12.00
 
*COPY CHILDREN         7
*LIST G                   101.89
 
 
TOTAL                  7  101.89


Exemple : Utilisation de SET SUMMARYLINES avec SUBTOTAL

La requête suivante utilisant la source de données MOVIES comprend une rupture de tri pour CATEGORY qui génère le sous-total du champ COPIES ainsi qu'une rupture de tri pour RATING qui génère le sous-total du champ LISTPR :

SET SUMMARYLINES=OLD
TABLE FILE MOVIES
SUM COPIES LISTPR WHOLESALEPR
BY RATING
BY CATEGORY
WHERE CATEGORY EQ 'CHILDREN'
WHERE RATING   EQ 'G'
ON RATING SUBTOTAL COPIES
ON CATEGORY SUBTOTAL LISTPR
END

Exécuter la requête avec SUMMARYLINES=OLD génère le sous-total des champs COPIES et LISTPR à chaque rupture de tri et et les propage vers la ligne de total général :

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR
------  --------  ------  ------  -----------
G       CHILDREN       7  101.89        54.49
                                             
*TOTAL CHILDREN        7  101.89             
*TOTAL G               7  101.89             
                                             
                                             
TOTAL                  7  101.89

L'exécution de la requête avec SUMMARYLINES=NEW génère le sous-total du champ COPIES uniquement à la rupture de tri RATING et génère le sous-total du champ LISTPR uniquement à la rupture de tri CATEGORY, mais elle propage ces deux à la ligne de total général :

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR
------  --------  ------  ------  -----------
G       CHILDREN       7  101.89        54.49
                                             
*TOTAL CHILDREN           101.89             
*TOTAL G               7                     
                                             
                                             
TOTAL                  7  101.89

Exécuter la requête avec SUMMARYLINES=EXPLICIT génère le sous-total du champ COPIES uniquement à la rupture de tri RATING et génère le sous-total du champ LISTPR uniquement à la rupture de tri CATEGORY. Elle ne génère pas la ligne de total général :

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR
------  --------  ------  ------  -----------
G       CHILDREN       7  101.89        54.49
                                             
*TOTAL CHILDREN           101.89             
*TOTAL G               7

L'ajout de la phrase ON TABLE SUBTOTAL WHOLESALEPR avec SUMMARYLINES=EXPLICIT à la requête génère une ligne de total général avec le sous-total du champ WHOLESALEPR :

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR
------  --------  ------  ------  -----------
G       CHILDREN       7  101.89        54.49
                                             
*TOTAL CHILDREN           101.89             
*TOTAL G               7                     
                                             
                                             
TOTAL                                   54.49


Exemple : Utilisation de COLUMN-TOTAL avec SET SUMMARYLINES=EXPLICIT

La requête suivante utilisant la source de données MOVIES comprend une rupture de tri pour CATEGORY qui génère le sous-total du champ COPIES et une rupture de tri pour RATING qui génère le sous-total du champ LISTPR. Elle comprend aussi une phrase ON TABLE COLUMN-TOTAL :

SET SUMMARYLINES=EXPLICIT
TABLE FILE MOVIES
SUM COPIES LISTPR WHOLESALEPR
BY RATING
BY CATEGORY
WHERE CATEGORY EQ 'CHILDREN'
WHERE RATING   EQ 'G'
ON RATING SUBTOTAL COPIES
ON CATEGORY SUBTOTAL LISTPR
ON TABLE COLUMN-TOTAL
END

La ligne de total général affiche un total de colonne pour toutes les colonnes numériques en raison de la phrase ON TABLE COLUMN-TOTAL :

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR
------  --------  ------  ------  -----------
G       CHILDREN       7  101.89        54.49
                                             
*TOTAL CHILDREN           101.89             
*TOTAL G               7                     
                                             
                                             
TOTAL                  7  101.89        54.49

La requête suivante comprend une commande ON TABLE SUBTOTAL WHOLESALEPR. Elle comprend aussi une phrase ON TABLE COLUMN-TOTAL :

SET SUMMARYLINES=EXPLICIT
TABLE FILE MOVIES
SUM COPIES LISTPR WHOLESALEPR
BY RATING
BY CATEGORY
WHERE CATEGORY EQ 'CHILDREN'
WHERE RATING   EQ 'G'
ON RATING SUBTOTAL COPIES
ON CATEGORY SUBTOTAL LISTPR
ON TABLE SUBTOTAL WHOLESALEPR
ON TABLE COLUMN-TOTAL
END

La ligne de total général affiche un total de colonne uniquement pour la colonne WHOLESALEPR en raison de la commande ON TABLE SUBTOTAL :

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR
------  --------  ------  ------  -----------
G       CHILDREN       7  101.89        54.49
                                             
*TOTAL CHILDREN           101.89             
*TOTAL G               7                     
                                             
                                             
TOTAL                                   54.49

Utiliser SUB-TOTAL au lieu de SUBTOTAL a pour résultat l'agrégation des champs COPIES and LISTPR sur la ligne de total général. WHOLESALEPR est totalisé parce qu'il est listé dans la phrase COLUMN-TOTAL. Le sous-total de LISTPR se propage à la rupture de tri RATING ainsi qu'au total général :

SET SUMMARYLINES=EXPLICIT
TABLE FILE MOVIES
SUM COPIES LISTPR WHOLESALEPR
BY RATING
BY CATEGORY
WHERE CATEGORY EQ 'CHILDREN'
WHERE RATING   EQ 'G'
ON RATING SUB-TOTAL COPIES
ON CATEGORY SUB-TOTAL LISTPR
ON TABLE COLUMN-TOTAL WHOLESALEPR
END

La sortie est :

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR
------  --------  ------  ------  -----------
G       CHILDREN       7  101.89        54.49
                                             
*TOTAL CHILDREN           101.89             
*TOTAL G               7  101.89             
                                             
                                             
TOTAL                  7  101.89        54.49

Haut de page

x
Utilisation d'opérateurs préfixe avec des valeurs calculées

Si une requête comprend les commandes RECOMPUTE ou SUMMARIZE, l'expression spécifiée dans la commande COMPUTE associée s'applique en utilisant des valeurs de la ligne récapitulative. Les colonnes utilisées pour recalculer l'expression peuvent avoir des opérateurs préfixe. La colonne recalculée, sans tenir compte de l'opérateur préfixe spécifié, applique ces valeurs à l'expression spécifiée dans la commande COMPUTE. Par conséquent, tout opérateur préfixe peut être spécifié pour la colonne de rapport recalculée sans avoir d'incidence sur la valeur calculée.

Le traitement par opérateur préfixe requiert que tous les champs utilisés dans la commande COMPUTE s'affichent par les commandes RECOMPUTE ou SUMMARIZE afin d'être remplis. Si aucun des champs dans l'expression n'est rempli, la valeur calculée renvoyée pour l'expression est imprévisible.



Exemple : Utilisation d'opérateurs préfixe avec RECOMPUTE

La première requête crée un champ calculé appelé , qui est la différence entre les colonnes DOLLARS et BUDDOLLARS. Cette valeur est recalculée par la suite pour chaque région, sans utiliser d'opérateurs préfixe.

TABLE FILE GGSALES
SUM UNITS DOLLARS BUDDOLLARS
AND COMPUTE DIFF/I10 = DOLLARS-BUDDOLLARS;
  BY REGION
  BY CATEGORY
  WHERE CATEGORY EQ 'Food' OR 'Coffee'
  WHERE REGION EQ 'West' OR 'Midwest'
  ON REGION  RECOMPUTE
END

La valeur recalculée est la différence entre les totaux des colonnes DOLLARS et BUDDOLLARS.

Region      Category    Unit Sales Dollar Sales Budget Dollars       DIFF
------      --------    ---------- ------------ --------------       ----
Midwest     Coffee          332777      4178513        4086032      92481
            Food            341414      4338271        4220721     117550
                                                                         
*TOTAL Midwest              674191      8516784        8306753     210031
                                                                         
West        Coffee          356763      4473517        4523963     -50446
            Food            340234      4202337        4183244      19093
                                                                         
*TOTAL West                 696997      8675854        8707207     -31353
                                                                         
                                                                         
TOTAL                      1371188     17192638       17013960     178678

La requête suivante utilise des opéraeurs préfixe dans la commande RECOMPUTE pour calculer les valeurs maximales de la colonne DOLLARS et les valeurs minimales de la colonne BUDDOLLARS et puis pour en recalculer la différence (DIFF). Peu importe quel opératuer préfixe est spécifié pour DIFF, il est calculé comme la différence entre les valeurs des colonnes DOLLARS et BUDDOLLARS. Si aucun des champs utilisés dans le calcul (DOLLARS, BUDDOLLARS et DIFF) ne s'affiche pas sur la ligne récapitulative, le calcul ne peut pas s'effectuer.

TABLE FILE GGSALES
SUM UNITS DOLLARS BUDDOLLARS
AND COMPUTE DIFF/I10 = DOLLARS-BUDDOLLARS;
  BY REGION
  BY CATEGORY
  WHERE CATEGORY EQ 'Food' OR 'Coffee'
  WHERE REGION EQ 'West' OR 'Midwest' 
  ON REGION RECOMPUTE MAX. DOLLARS MIN. BUDDOLLARS AVE. DIFF
END

La sortie est :

Region      Category    Unit Sales Dollar Sales Budget Dollars       DIFF
------      --------    ---------- ------------ --------------       ----
Midwest     Coffee          332777      4178513        4086032      92481
            Food            341414      4338271        4220721     117550
                                                                         
*TOTAL Midwest                          4338271        4086032     252239
                                                                         
West        Coffee          356763      4473517        4523963     -50446
            Food            340234      4202337        4183244      19093
                                                                         
*TOTAL West                             4473517        4183244     290273


Exemple : Utilisation de RECOMPUTE aux niveaux du sort break et du total général

L'exemple suivant ajoute la commande ON TABLE RECOMPUTE à la requête présentée dans Utilisation d'opérateurs préfixe avec RECOMPUTE afin de calculer les valeurs moyennes de chaque colonne. Notez que la valeur de DIFF est calculée comme la différence entre les valeurs des colonnes Dollar Sales et Budget Dollars sur la ligne de total général :

TABLE FILE GGSALES
SUM UNITS DOLLARS BUDDOLLARS
AND COMPUTE DIFF/I10 = DOLLARS-BUDDOLLARS;
  BY REGION
  BY CATEGORY
  WHERE CATEGORY EQ 'Food' OR 'Coffee'
  WHERE REGION EQ 'West' OR 'Midwest'
  ON REGION  RECOMPUTE MAX. DOLLARS MIN. BUDDOLLARS DIFF
 ON TABLE RECOMPUTE AVE.
END

La sortie est :

Region      Category    Unit Sales Dollar Sales Budget Dollars       DIFF
------      --------    ---------- ------------ --------------       ----
Midwest     Coffee          332777      4178513        4086032      92481
            Food            341414      4338271        4220721     117550
                                                                         
*TOTAL Midwest                          4338271        4086032     252239
                                                                         
West        Coffee          356763      4473527        4523963     -50436
            Food            340234      4202338        4183244      19094
                                                                         
*TOTAL West                             4473527        4183244     290283
                                                                         
                                                                         
TOTAL                       342797      4298162        4253490      44672

Haut de page

x
Utilisation de plusieurs commandes SUB-TOTAL ou SUMMARIZE avec des opérateurs préfixe

Les commandes SUB-TOTAL et SUMMARIZE propagent leurs opérations à tous les champs de tri de niveau supérieur. Si une requête utilise les commandes SUB-TOTAL ou SUMMARIZE à plusieurs niveaux de tri, plus d'un opérateur préfixe peut s'appliquer au même champ.

Lorsqu'une commande SUB-TOTAL ou SUMMARIZE sur un champ de tri de niveau inférieur se propage vers les niveaux supérieurs, elle applique ses opérateurs préfixe uniquement aux champs pour lesquels d'autres opérateurs préfixe ne sont pas spécifiés au niveau supérieur. Pour tout champ qui a un opérateur préfixe spécifié à un niveau supérieur, l'opérateur préfixe original s'applique au niveau auquel il a été spécifié au départ et à la ligne de total général, à moins qu'un autre opérateur préfixe ne soit spécifié pour la ligne de total général.



Exemple : Utilisation de commandes SUB-TOTAL ou SUMMARIZE multiples avec des opérateurs préfixe

L'exemple suivant illustre l'influence des opérateurs préfixe sur une requête contenant plusieurs commandes SUB-TOTAL, qui ont chacune un opérateur préfixe différent.

DEFINE FILE GGSALES
YEAR/YY = DATE;
END
 
TABLE FILE GGSALES
SUM   UNITS DOLLARS/D10.2 BUDDOLLARS
  BY YEAR
  BY ST
  BY REGION
  BY CATEGORY
WHERE REGION EQ 'West' OR 'Midwest'
WHERE ST     EQ 'CA' OR 'IL'
WHERE YEAR EQ '1996' OR '1997'
  ON YEAR SUB-TOTAL CNT. UNITS AS '*CNT. UNITS:'
  ON ST SUB-TOTAL AVE. DOLLARS AS '*AVE. $:' 
  ON REGION SUB-TOTAL MIN. AS '*MIN.:'
END

Dans la sortie de rapport suivante, certaines valeurs ont été mises en caractères italiques ou gras manuellement à titre de précision :


WebFOCUS