Vorgehensweise: Referenz: |
Sie können die Befehle SUBTOTAL und SUB-TOTAL verwenden, um individuelle Werte (z. B. Zahlenspalten) jedesmal zu summieren, wenn ein benanntes Sortierfeld seinen Wert ändert.
Sowohl SUB-TOTAL als auch SUBTOTAL erzeugen Gesamtsummen. Sie können Gesamtsummen unterdrücken, indem Sie den NOTOTAL-Befehl verwenden. Siehe Gesamtsummen unterdrücken.
Die Zwischensumme wird jedesmal berechnet, wenn sich der Sortierfeldwert ändert oder jedesmal wenn die WHEN-Bedingungen erfüllt werden, falls WHEN-Kriterien auf das Sortierfeld angewendet werden.
Es wird eine BY-, ACROSS- oder ON-Phrase benötigt, um die Syntax zu initialisieren.
{BY|ON} fieldname {SUB-TOTAL|SUBTOTAL} [MULTILINES] [field1 [AND] field2...] [AS 'text'][WHEN expression;]
Hierbei gilt:
SUBTOTAL zeigt eine Zwischensumme nur an, wenn sich der Wert des angegebenen Sortierfeldes ändert.
Sie können anstelle einer Feldliste das Platzhalterzeichen Sternchen (*) verwenden, um anzugeben, dass alle Felder (numerische und alphanumerische) in den Summenzeilen enthalten sein sollten. Dies ist erforderlich, wenn Sie alphanumerische Spalten in Summenzeilen anzeigen möchten, wenn SET SUMMARYLINES auf OLD eingestellt ist. Sie können für andere Werte von SUMMARYLINES entweder das Sternchen verwenden, um alle Zeilen anzuzeigen, oder auf die spezifischen Zeilen verweisen, die angezeigt werden sollen.
SET SUBTOTALS = {ABOVE|BELOW}
Hierbei gilt:
Hinweis: SET SUBTOTALS = ABOVE wird mit dem Format EXL2K FORMULA nicht unterstützt.
Die folgende Anfrage mit der Datenquelle EMPLOYEE summiert Steuerabzugsbeträge und Bruttolöhne nach Abteilung, Abzugscode und Nachname. Sie berechnet dann die Zwischensummen der Steuerabzugsbeträge und der Bruttolöhne für jede Abteilung. Die folgende Anfrage platziert die Zwischensummen unter die Detailzeilen (der Default):
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
Die Ausgabe ist:
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
Nachfolgend sehen Sie dieselbe Anfrage, wobei jedoch die Zwischensummen über den Detailzeilen platziert sind:
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
In der Ausgabe kommt die Gesamtsummenzeile zuerst, dann die Zwischensumme für die Abteilung MIS gefolgt von den Detailzeilen für die Abteilung MIS, gefolgt von der Zwischensumme für die Abteilung PRODUCTION und ihren Detailzeilen. Beachten Sie, dass alle Sortierfeldwerte in jeder Zeile der Reportausgabe angezeigt werden:
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
dann werden, sobald sich AREA ändert, Zwischensummen für DATE, PROD_CODE und AREA auf drei Zeilen (untereinander) angezeigt.
Hinweis: ON BYfield SUBFOOT trifft nur auf die angegebene Ebene zu.
Die folgende Anfrage verdeutlicht, wie Sie eine Zwischensumme für SALES erstellen, sobald sich der Wert für Land ändert.
TABLE FILE CAR SUM AVE.MPG AND SALES AND AVE.RETAIL_COST BY COUNTRY SUB-TOTAL SALES BY BODYTYPE END
Die Ausgabe ist:
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
Die folgende Anfrage verdeutlicht, wie Sie eine Zwischensumme für die numerischen Felder DED_AMT und GROSS erstellen, wenn sich der Wert für Abteilung ändert. Sie zeigt auch, wie Sie eine Zwischensumme für das Sortierfeld der höheren Ebene (DED_CODE) erstellen, wenn sich sein Wert ändert.
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
Wenn Sie SUBTOTAL anstelle von SUB-TOTAL verwenden, werden die Summen für DED_AMT und GROSS nur angezeigt, wenn sich der Wert für DEPARTMENT ändert.
Der erste Teil der Ausgabe ist:
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
Der letzte Teil der Ausgabe ist:
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 |