In diesem Abschnitt:
Vorgehensweise: Referenz: |
Sie können die Befehle SUBTOTAL, SUB-TOTAL, RECOMPUTE und SUMMARIZE auf der ON TABLE-Ebene verwenden, um anzugeben, welche Summenoperation verwendet werden soll, um die Gesamtsummenzeile im Report zu erzeugen.
Es können zusätzlich Präfixoperatoren mit den Summenoptionen SUBTOTAL, SUB-TOTAL, RECOMPUTE und SUMMARIZE sowohl auf der Ebene des Sortierumbruchs als auch auf der Ebene der Gesamtsumme verwendet werden.
Präfixoperationen in Summenzeilen werden mit abgerufenen, ausgewählten und summierten Werten durchgeführt, die zu den Detailzeilen des Reports werden. Anders als auf Feldern basierende Präfixoperationen werden sie nicht bei jedem Eingang eines Datensatzes durchgeführt.
Jeder Summentyp erfüllt seinen eigenen Zweck und verarbeitet die Präfixoperatoren entsprechend des Typs der Summeninformationen, der angezeigt werden soll. Wenn Sie beispielsweise AVE. an einem Sortierfeldumbruch verwenden, wird der Durchschnitt dieser Sortiergruppe berechnet.
Es können in Summenzeilen auch alphanumerische Felder angezeigt werden. Sie müssen dazu entweder den Namen des alphanumerischen Feldes explizit im Summenbefehl auflisten oder ein Sternchen (*) als Platzhalter verwenden, um alle Felder anzuzeigen.
Unterschiedliche Operationen für denselben Sortierumbruch von zwei ON-Phrasen werden in derselben Summenzeile angezeigt und ermöglichen eine Mischung von Operationen in Summenzeilen. Die Gesamtsummenzeile füllt alle Felder auf, die mit einem beliebigen Summenbefehl aufgefüllt wurden, selbst wenn sie nicht im Gesamtsummenbefehl angegeben sind.
Wenn auf dasselbe Feld in mehr als einer ON-Phrase für denselben Sortierumbruch verwiesen wird, wird die zuletzt angegebene Funktion angewendet.
Es werden für numerische Felder die folgenden Präfixoperatoren unterstützt:
Es werden für alphanumerische Felder die folgenden Präfixoperatoren unterstützt:
{BY|ON} breakfield [AS 'text1'] sumoption [MULTILINES] [pref. ] [*|[field1 [[pref2. ] field2 ...]]] [AS 'text2'] [WHEN expression;]
Verwenden Sie die folgende Syntax, um die Default-Gesamtsumme zu ersetzen:
ON TABLE sumoption [pref. ][field1 [[pref2. ]field2 ...]] [AS 'text2']
Hierbei gilt:
Im folgenden Beispiel werden Präfixoperatoren verwendet, um Folgendes zu berechnen:
Beachten Sie, dass die Zwischensummenzeile für jede Bewertung nur einen Wert in der LISTPR-Spalte und die Zwischensummenzeile für jede Kategorie nur einen Wert in der COPIES-Spalte enthält. Die Gesamtsummenzeile enthält nur Werte für die Spalten, für die Zwischensummen berechnet wurden. Beachten Sie das Leerzeichen zwischen jedem Präfixoperator und dem Feldnamen, der auf ihn folgt:
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
Die Ausgabe ist:
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
Im folgenden Beispiel wird der Anfrage der ON TABLE SUBTOTAL-Befehl in Präfixoperatoren mit SUBTOTAL verwenden auf der Ebene des Sortierumbruchs hinzugefügt, um für den gesamten Report die minimale Anzahl Kopien und den maximalen Listenpreis in der Gesamtsummenzeile zu berechnen:
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
Die Ausgabe ist identisch mit der Ausgabe der vorherigen Anfrage mit Ausnahme der Gesamtsummenzeile:
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
Die folgende Anfrage zeigt die Summe des Listenpreisfeldes sowie den Minimalwert des Direktorfeldes nach Bewertung:
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
Die Ausgabe ist:
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.
Die folgende Anfrage zeigt die Summe jedes Anzeigefeldes in der Zwischensummenzeile an. Das Direktorfeld ist alphanumerisch und somit wird der letzte Wert angezeigt:
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
Die Ausgabe ist:
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.
Vorgehensweise: Referenz: |
Wenn Sie Summenzeilen verarbeiten, können Sie steuern, ob Präfixoperatorverarbeitung verwendet wird und, ob die Befehle SUBTOTAL und RECOMPUTE an die Gesamtsummenzeile des Reports weitergegeben werden.
Summenzeilenverarbeitung mit Präfixoperatoren unterscheidet sich von der Verarbeitung ohne Präfixoperatoren sowohl, was die unterstützten Operationstypen als auch was die betroffenen Felder angeht.
Sie können diese zwei Verarbeitungsweisen per Default in einer Anfrage nicht vermischen und die in der Anfrage verwendete Syntax (Präfixoperatoren oder keine Präfixoperatoren in Summenzeilen) bestimmt, welche Verarbeitungsweise verwendet wird.
Eine Funktion der SUMMARYLINES-Einstellung ist es, dass Sie Felder mit und Felder ohne Präfixoperatoren in den Summenzeilen eines Reports kombinieren können. In diesem Fall wird für alle Summenzeilen Präfixoperatorverarbeitung verwendet. Die Felder ohne Präfixoperatoren werden wie mit dem Operator SUM verarbeitet. Die neue Verarbeitung ist erforderlich, um alphanumerische Felder in Summenzeilen anzuzeigen.
Die Verarbeitung von Reports, die Präfixoperatoren in Summenzeilen verwenden, unterscheidet sich von der Verarbeitung ohne Präfixoperatoren. In manchen Fällen führen unterschiedliche Anfragetypen zu einer unterschiedlichen Reportausgabe.
Wenn ein Summenbefehl einen Feldnamen angibt und ein anderer Summenbefehl einen zweiten Feldnamen angibt:
Wenn ein Präfixoperator in einem der Summenbefehle verwendet wird, wird für die Anfrage Präfixoperatorverarbeitung benötigt. Bei den meisten Anfragen ist es klar, welcher Verarbeitungstyp verwendet werden sollte, selbst wenn in manchen Summenbefehlen Präfixoperatoren angegeben sind und in anderen nicht.
Wenn jedoch ein Summenpräfixoperator das erste Mal vorkommt, nachdem ein Feldname in einem Summenbefehl ohne einen begleitenden Präfixoperator angegeben wurde, kann keiner der beiden Verarbeitungstypen verwendet werden. In diesem Fall wird per Default die Verarbeitung abgebrochen und die folgende Fehlermeldung erzeugt:
(FOC36376) CANNOT COMBINE SUBTOTAL/RECOMPUTE STYLES WHEN SUMMARYLINES=OLD
Beispiel:
ON RATING SUBTOTAL COPIES AVE. LISTPR
oder
ON RATING SUBTOTAL LISTPR ON CATEGORY SUBTOTAL AVE. COPIES
Sie können dieses Problem vermeiden, indem Sie den Befehl SET SUMMARYLINES=NEW ausgeben, um anzugeben, dass Präfixoperatorverarbeitung verwendet werden soll. Der SUM. -Operator wird dann auf alle Felder angewendet, die keinen Präfixoperator haben.
Die neue Verarbeitung ist erforderlich, um alphanumerische Felder in Summenzeilen anzuzeigen.
Die zweite Funktion des Befehls SET SUMMARYLINES=EXPLICIT ist es, die Verarbeitung von SUBTOTAL, SUB-TOTAL, SUMMARIZE und RECOMPUTE in der Gesamtsummenzeile der Verarbeitung von Sortierfeldumbrüchen anzugleichen. Die Einstellung, die diesen Verarbeitungstyp aufruft, ist SET SUMMARYLINES=EXPLICIT.
Wenn SUBTOTAL und RECOMPUTE auf der Ebene eines Sortierumbruchs verwendet werden, findet die Weitergabe an andere Sortierumbrüche nicht statt. SUB-TOTAL und SUMMARIZE reichen an alle Sortierumbrüche einer höheren Ebene weiter.
Die Gesamtsumme kann als das Sortierfeld der höchsten Ebene in einer Anfrage betrachtet werden. Per Default reichen jedoch alle Summenoptionen, nicht nur SUB-TOTAL und SUMMARIZE, Werte an die Gesamtsummenebene weiter.
Der Befehl SET SUMMARYLINES=EXPLICIT verhindert die Weitergabe von SUBTOTAL und RECOMPUTE an die Gesamtsumme. Falls zusätzlich alle Summenbefehle in der Anfrage Felderlisten angeben, werden nur die angegebenen Felder aggregiert und in der Gesamtsummenzeile angezeigt.
Wenn SUBTOTAL und RECOMPUTE die einzigen Summenbefehle in einer Anfrage sind, wird eine Gesammtsummenzeile nur dann erstellt, wenn dies explizit mit der Phrase ON TABLE SUBTOTAL/SUB-TOTAL/RECOMPUTE/SUMMARIZE angegeben wurde. Wenn die Phrase ON TABLE eine Felderliste angibt, werden nur diese Felder aggregiert und angezeigt.
Beachten Sie, dass Sie die Gesamtsummenzeile jederzeit mit dem Befehl ON TALBE NOTOTAL unterdrücken können.
SET SUMMARYLINES = {OLD|NEW|EXPLICIT}
Hierbei gilt:
Beachten Sie, dass Präfixoperatoren, die einer Liste mit Feldnamen vorangehen, auf alle diese Reportspalten angewendet werden (und dies nicht als Mischen betrachtet wird). Sie können den SUM.-Operator für Felder, für die Sie eine standardmäßige Zwischensumme wünschen, angeben. Es wird so derselbe Wert erzeugt, der ohne Präfixoperatoren erzeugt worden wäre. Alphanumerische Felder sind in Summenzeilen nicht enthalten.
NEW ermöglicht auch Summenoperationen mit alphanumerischen Spalten. Der alphanumerische Wert, der in einer SUBTOTAL- oder SUB-TOTAL-Zeile angezeigt wird, ist entweder der erste oder der letzte alphanumerische Wert in der Sortiergruppe, abhängig vom Wert des Parameters SUMPREFIX. In einer RECOMPUTE- oder SUMMARIZE-Zeile werden alphanumerische Werte mit den Summenwerten für diese Zeile erneut berechnet.
Hinweis: Dieser Befehl wird nicht in Anfragen unterstützt, die eine ON TABLE SET-Syntax enthalten.
Beispiel:
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
Die Ausgabe bei SUMMARYLINES=OLD enthält an beiden Sortierumbrüchen Zwischensummen für COPIES und LISTPR. Auf WHOLESALEPR wird in keinem der SUBTOTAL-Befehle verwiesen und es erscheint daher in keiner der Summenzeilen:
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
Die Ausgabe bei SUMMARYLINES=NEW enthält für COPIES Zwischensummen am CATEGORY-Sortierumbruch und für LISTPR am RATING-Sortierumbruch. Beide Spalten werden in der Gesamtsummenzeile aufgefüllt. Auf WHOLESALEPR wird in keinem der SUBTOTAL-Befehle verwiesen und es erscheint daher in keiner der Summenzeilen:
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
Die folgende Anfrage verwendet die MOVIES-Datenquelle und enthält einen Sortierumbruch für CATEGORY, der eine Zwischensumme für das COPIES-Feld erstellt und einen Sortierumbruch für RATING, der eine Zwischensumme für das LISTPR-Feld erstellt:
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
Das Ausführen der Anfrage mit SUMMARYLINES=OLD erstellt eine Zwischensumme für COPIES und LISTPR an jedem Sortierumbruch und leitet diese an die Gesamtsummenzeile weiter:
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
Das Ausführen der Anfrage mit SUMMARYLINES=NEW erstellt eine Zwischensumme von COPIES nur für den RATING-Sortierumbruch und von LISTPR nur für den CATEGORY-Sortierumbruch. Sie werden jedoch beide an die Gesamtsummenzeile weitergereicht:
RATING CATEGORY COPIES LISTPR WHOLESALEPR ------ -------- ------ ------ ----------- G CHILDREN 7 101.89 54.49 *TOTAL CHILDREN 101.89 *TOTAL G 7 TOTAL 7 101.89
Das Ausführen der Anfrage mit SUMMARYLINES=EXPLICIT erstellt eine Zwischensumme von COPIES nur für den RATING-Sortierumbruch und von LISTPR nur für den CATEGORY-Sortierumbruch. Es wird keine Gesamtsummenzeile erstellt:
RATING CATEGORY COPIES LISTPR WHOLESALEPR ------ -------- ------ ------ ----------- G CHILDREN 7 101.89 54.49 *TOTAL CHILDREN 101.89 *TOTAL G 7
Das Hinzufügen der Phrase ON TABLE SUBTOTAL WHOLESALEPR mit SUMMARYLINES=EXPLICIT erstellt eine Gesamtsummenzeile mit einer Zwischensumme für das WHOLESALEPR-Feld:
RATING CATEGORY COPIES LISTPR WHOLESALEPR ------ -------- ------ ------ ----------- G CHILDREN 7 101.89 54.49 *TOTAL CHILDREN 101.89 *TOTAL G 7 TOTAL 54.49
Die folgende Anfrage verwendet die MOVIES-Datenquelle und enthält einen Sortierumbruch für CATEGORY, der eine Zwischensumme für das COPIES-Feld erstellt und einen Sortierumbruch für RATING, der eine Zwischensumme für das LISTPR-Feld erstellt. Es enthält auch eine ON TABLE COLUMN-TOTAL-Phrase:
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
Die Gesamtsummenzeile zeigt aufgrund der ON TABLE COLUMN-TOTAL-Phrase eine Spaltensumme für alle numerischen Spalten an:
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
Die folgende Anfrage enthält einen ON TABLE SUBTOTAL WHOLESALEPR-Befehl. Es enthält auch eine ON TABLE COLUMN-TOTAL-Phrase:
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
Die Gesamtsummenzeile zeigt aufgrund des ON TABLE SUBTOTAL-Befehls nur eine Spaltensumme für die WHOLESALEPR-Spalte an:
RATING CATEGORY COPIES LISTPR WHOLESALEPR ------ -------- ------ ------ ----------- G CHILDREN 7 101.89 54.49 *TOTAL CHILDREN 101.89 *TOTAL G 7 TOTAL 54.49
Das Verwenden von SUB-TOTAL anstelle von SUBTOTAL bewirkt, dass COPIES und LISTPR in der Gesamtsummenzeile aggregiert werden. WHOLESALEPR wird summiert, da es in der COLUMN-TOTAL-Phrase aufgelistet ist. Die Zwischensumme für LISTPR wird sowohl an den RATING-Sortierumbruch als auch an die Gesamtsumme weitergereicht:
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
Die Ausgabe ist:
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
Wenn eine Anfrage den RECOMPUTE- oder den SUMMARIZE-Befehl enthält, wird die Formel, die im assoziierten COMPUTE-Befehl angegeben ist, unter Verwendung von Werten aus der Summenzeile angewendet. Die Spalten, die verwendet werden, um die Formel neu zu berechnen, dürfen Präfixoperatoren enthalten. Die neuberechnete Spalte, ungeachtet des Präfixoperators, der für sie angegeben wurde, wendet diese Eingabewerte auf die im COMPUTE-Befehl angegebene Formel an. Deshalb kann ein beliebiger unterstützter Präfixoperator für die neuberechnete Reportspalte angegeben werden, ohne dass sich dies auf den berechneten Wert auswirkt.
Bei der Präfixoperatorverarbeitung müssen alle Felder, die im COMPUTE-Befehl verwendet werden, vom RECOMPUTE- oder vom SUMMARIZE-Befehl angezeigt werden, um aufgefüllt werden zu können. Wenn auch nur ein Feld in der Formel nicht aufgefüllt wurde, ist der für die Formel zurückgegebene Wert unvorhersehbar.
Die erste Anfrage erstellt ein berechnetes Feld namens , welches die Differenz zwischen DOLLARS und BUDDOLLARS ist. Dieser Wert wird dann für jede Region neuberechnet, ohne dass Präfixoperatoren verwendet werden.
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
Der neuberechnete Wert ist die Differenz zwischen den Gesamtsummen für DOLLARS und 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
Die folgende Anfrage verwendet Präfixoperatoren im RECOMPUTE-Befehl, um das Maximum für DOLLARS und das Maximum für BUDDOLLARS zu berechnen und dann DIFF neu zu berechnen. Es macht keinen Unterschied, welcher Präfixoperator für DIFF angegeben wird. Es wird immer als Differenz zwischen den Werten in den Spalten DOLLARS und BUDDOLLARS berechnet. Wenn auch nur ein Feld, das in der Berechnung verwendet wird (DOLLARS, BUDDOLLARS und DIFF), in der Summenzeile nicht angezeigt wird, kann die Berechnung nicht durchgeführt werden.
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
Die Ausgabe ist:
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
Im folgenden Beispiel wird der Befehl ON TABLE RECOMPUTE der Anfrage in Präfixoperatoren mit RECOMPUTE verwenden hinzugefügt, um die Durchschnittswerte für jede Spalte zu berechnen. Beachten Sie, dass der Wert von DIFF als Differenz zwischen den Werten in den Spalten Absatz in Dollar und Eingeplante Dollar in der Gesamtsummenzeile berechnet wird:
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
Die Ausgabe ist:
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
SUB-TOTAL und SUMMARIZE geben ihre Operationen an alle Sortierfelder auf höheren Ebenen weiter. Wenn eine Anfrage SUB-TOTAL oder SUMMARIZE auf mehreren Sortierebenen verwendet, trifft ggf. mehr als nur ein Präfixoperator auf dasselbe Feld zu.
Wenn ein SUB-TOTAL- oder ein SUMMARIZE-Befehl in einem Sortierfeld einer niedrigeren Ebene Werte an höhere Ebenen weitergibt, wendet er seine Präfixoperatoren nur auf die Felder an, für die nicht schon andere Präfixoperatoren auf der höheren Ebene angegeben wurden. Bei allen Feldern, für die ein Präfixoperator auf einer höheren Ebene angegeben wurde, wird der ursprüngliche Präfixoperator auf der Ebene, auf der er zuerst angegeben wurde, und auf die Gesamtsummenzeile angewendet, es sei denn es wurde für die Gesamtsummenzeile ein anderer Operator angegeben.
Im Folgenden wird beschrieben, wie Präfixoperatoren in einer Anfrage funktionieren, die mehrere SUB-TOTAL-Befehle enthält, von denen jeder einen anderen Präfixoperator hat.
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
In der folgenden Reportausgabe wurden manche der Werte manuell kursiv oder fett geschrieben, um sie hervorzuheben:
WebFOCUS |