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.
{BY|ON} fieldname {SUB-TOTAL|SUBTOTAL} [MULTILINES] [field1 [AND] field2...] [AS 'text'][WHEN expression;]
où :
SUBTOTAL n'affiche un sous-total que lorsque le champ de tri spécifié change de valeur.
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.
SET SUBTOTALS = {ABOVE|BELOW}
où :
Remarque : SET SUBTOTALS = ABOVE n'est pas pris en charge avec le format EXL2K FORMULA.
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
BY AREA BY PROD_CODE BY DATE SUB-TOTAL
lorsque AREA change, donc, les sous-totaux s'affichent pour DATE, PROD_CODE, et AREA sur trois lignes (l'une en dessous de l'autre).
Remarque : ON BYfield SUBFOOT s'applique uniquement au niveau spécifié.
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
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 |