Summenwerte mit Präfixoperatoren manipulieren

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:


Nach oben

x
Syntax: Präfixoperatoren mit Summenwerten verwenden
{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:

breakfield
Ist das Sortierfeld, dessen Wertänderung die Summenfunktion auslöst. Eine BY-Phrase kann einen Summenbefehl enthalten. Wenn sich der Wert des Sortierfeldes ändert, wird die Summenoperation ausgelöst.
sumoption
Ist einer der Folgenden Befehle: SUBTOTAL, SUB-TOTAL, RECOMPUTE oder SUMMARIZE.
'text1'
Ist die Spaltenkopfzeile, die für das Umbruchfeld in der Reportausgabe verwendet werden soll.
MULTILINES
Unterdrückt die Anzeige einer Summenzeile für alle Sortierumbrüche, die nur eine Detailzeile haben. Beachten Sie, dass MULTILINES die Summenzeilen selbst dann unterdrückt, wenn ein Präfixoperator verwendet wird, um eine andere Operation für die Summenzeile anzugeben. MULTI-LINES ist ein Synonym für MULTILINES. MULTILINES wird mit horizontalen (ACROSS) Sortierfeldern nicht unterstützt.
pref.
Ist ein Präfixoperator. Wenn der Präfixoperator ohne eine Feldliste angegeben wurde, wird er auf alle numerischen Spalten in der Reportausgabe angewendet und es werden alle numerischen Spalten in der Summenzeile mit Werten aufgefüllt.
*
Schließt alle Anzeigefelder in der Summenzeile mit ein. Wenn ein Präfixoperator angegeben wurde, wird er auf alle Felder angewendet. Falls der Präfixoperator für alphanumerische Felder nicht unterstützt wird, werden keine alphanumerischen Felder in die Summenzeile aufgenommen.
[field1 [field2 ... fieldn]]
Erzeugt den Summentyp, der durch die sumoption für die gelisteten Felder angegeben wird. Wenn keine Feldnamen aufgelistet sind, wird die Summe für jede numerische Spalte in der Reportausgabe erzeugt.
pref. field1 [field2 ... fieldn] [pref2. fieldm ...]
Der erste Präfixoperator wird auf field1 bis fieldn angewendet. Der zweite Präfixoperator wird auf fieldm angewendet. Nur die angegebenen Felder werden in der Summenzeile mit Werten aufgefüllt. Jeder Präfixoperator muss durch ein Leerzeichen vom ihm folgenden Feldnamen getrennt sein. Beispiel:

'text2'
Ist der Text, der links neben der Summenzeile gedruckt wird.
expression
Ist eine Formel, die bestimmt, ob eine Summenfunktion bei jedem Umbruch durchgeführt werden soll.

Nach oben

x
Referenz: Verwendungshinweise für Summenpräfixoperatoren


Beispiel: Präfixoperatoren mit SUBTOTAL verwenden

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


Beispiel: SUBTOTAL am Sortierumbruch und auf Gesamtsummenebenen verwenden

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


Beispiel: Ein alphanumerisches Feld in einer Summenzeile anzeigen

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.


Beispiel: Alle Felder in einer Summenzeile anzeigen

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.

Nach oben

x
Summenzeilenverarbeitung steuern

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.



x
Syntax: Summenzeilenverarbeitung steuern
SET SUMMARYLINES = {OLD|NEW|EXPLICIT}

Hierbei gilt:

OLD
Erlaubt Summenfelder mit und ohne Präfixoperatoren nicht und gibt alle Summenoperationen an die Gesamtsummenzeile weiter. Es müssen auf alle Felder, die in Summenzeilen angegeben sind, Präfixoperatoren angewendet werden oder es müssen alle Felder Präfixoperatoren ausschließen. Diese Syntax bestimmt, welcher Verarbeitungstyp angewendet wird. OLD ist der Defaultwert.

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
Reicht alle Summenoperationen an die Gesamtsummenzeile weiter. Verwendet Präfixoperatoren für die Verarbeitung aller Summenbefehle (alle Summenfelder ohne Präfixoperatoren werden verarbeitet als hätten Sie einen SUM. Operator). Felder, die in einem Summenbefehl aufgelistet sind, werden nur in Summenzeilen aufgefüllt, die von diesem Summenbefehl oder durch die Weitergabe dieses Summenbefehls erstellt wurden. Unterstützt die Anzeige alphanumerischer Felder in Summenzeilen.

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.

EXPLICIT
Leitet SUBTOTAL und RECOMPUTE nicht an die Gesamtsummenzeile weiter. Verwendet Präfixoperatoren für die Verarbeitung aller Summenbefehle (alle Summenfelder ohne Präfixoperatoren werden verarbeitet als hätten Sie einen SUM. Operator). Felder, die in einem Summenbefehl aufgelistet sind, werden nur in Summenzeilen aufgefüllt, die von diesem Summenbefehl oder durch die Weitergabe dieses Summenbefehls erstellt wurden. Unterstützt die Anzeige alphanumerischer Felder in Summenzeilen.

Hinweis: Dieser Befehl wird nicht in Anfragen unterstützt, die eine ON TABLE SET-Syntax enthalten.



x
Referenz: Verwendungshinweise für SET SUMMARYLINES

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


Beispiel: SET SUMMARYLINES mit SUBTOTAL verwenden

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


Beispiel: COLUMN-TOTAL mit SET SUMMARYLINES=EXPLICIT verwenden

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

Nach oben

x
Präfixoperatoren mit berechneten Werten verwenden

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.



Beispiel: Präfixoperatoren mit RECOMPUTE verwenden

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


Beispiel: RECOMPUTE auf der Ebene des Sortierumbruchs und der Gesamtsumme verwenden

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

Nach oben

x
Mehrere SUB-TOTAL- oder SUMMARIZE-Befehle mit Präfixoperatoren verwenden

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.



Beispiel: Mehrere SUB-TOTAL- Befehle mit Präfixoperatoren verwenden

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