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 :
{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ù :
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
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
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.
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.
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.
SET SUMMARYLINES = {OLD|NEW|EXPLICIT}
où :
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 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.
Remarque : cette commande n'est pas supportée dans une requête utilisant la syntaxe ON TABLE SET.
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
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
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
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.
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
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
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.
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 |