Kombinationen aus Summenbefehlen

Referenz:

Sie können für jeden Sortierumbruch (BY- oder ACROSS-Feld) eine andere Summenoperation angeben.

Wenn mehrere Summenbefehle für dasselbe BY-Feld vorhanden sind, wird die folgende Meldung angezeigt und der zuletzt in der Anfrage angegebene Summenbefehl verwendet:

(FOC36359)  MORE THAN 1 SUBTOTAL/SUB-TOTAL/RECOMPUTE/SUMMARIZE

Es gibt mehr als einen SUBTOTAL/SUB-TOTAL/RECOMPUTE/SUMMARIZE-Befehl für dasselbe Schlüsselfeld. Dies ist nicht erlaubt. Es werden alle vorherigen Befehle mit dem zuletzt angegebenen überschrieben.

SUMMARIZE und SUB-TOTAL, die ihre Summenbefehle an Sortierumbrüche auf höheren Ebene weitergeben, überspringen Felder an Sortierumbrüchen höherer Ebenen, die eigene Summenbefehle haben. Die Weitergabe von Summenoperationen hängt davon ab, ob Präfixoperatorverarbeitung für Summenzeilen verwendet wird. Wenn Präfixoperatoren...

Präfixoperatoren in Summenzeilen ergeben dieselben Werte, unabhängig davon, ob der RECOMPUTE/SUMMARIZE- oder der SUBTOTAL/SUB-TOTAL-Befehl verwendet wird. Für ein berechnetes Feld wird der Präfixoperator nicht verwendet. Der Wert wird mit der Formel im COMPUTE-Befehl und den Werten in der Summenzeile neu berechnet.

Wenn Sie für verschiedene Sortierfelder verschiedene Summenbefehle verwenden, übernimmt die Default-Gesamtsummenzeile den Summenbefehl, der mit dem ersten Sortierfeld in der Anfrage assoziiert ist. Sie können die Operation ändern, die auf der Ebene der Gesamtsumme ausgeführt wird, indem Sie die ON TABLE-Phrase verwenden, um einen bestimmten Summenbefehl anzugeben.

Hinweis: Die Gesamtsumme wird als höchste Sortierebene betrachtet. Daher gelten diese Befehle, obwohl Sie den SUMMARIZE- oder SUB-TOTAL-Befehl auf der Gesamtsummenebene verwenden können, nur für die Gesamtsumme und werden an keine andere Zeile im Report weitergegeben. Auf der Gesamtsummenebene agiert SUMMARIZE als ein RECOMPUTE-Befehl und SUB-TOTAL als ein SUBTOTAL-Befehl.


Nach oben

Beispiel: SUBTOTAL und RECOMPUTE in einer Anfrage verwenden

In der folgenden Anfrage ist das erste angegebene Sortierfeld COPIES, das mit dem RECOMPUTE-Befehl assoziiert wird. Daher wird in der Gesamtsummenzeile der Wert für RATIO richtig neu berechnet und die Werte für LISTPR und WHOLESALEPR werden summiert (da dies die Default-Operation ist, wenn das Feld nicht von einem COMPUTE-Befehl berechnet wird).

TABLE FILE MOVIES
PRINT DIRECTOR LISTPR WHOLESALEPR
COMPUTE RATIO = LISTPR/WHOLESALEPR;
BY COPIES
BY RATING
WHERE COPIES LT 3
WHERE DIRECTOR EQ 'DISNEY W.' OR 'HITCHCOCK A.'
ON COPIES RECOMPUTE AS '*REC: '
ON RATING SUBTOTAL AS '*SUB:  '
END

Die Ausgabe ist:

COPIES  RATING  DIRECTOR           LISTPR  WHOLESALEPR           RATIO
------  ------  --------           ------  -----------           -----
     1  NR      DISNEY W.           29.95        15.99            1.87
                                                                      
*SUB:   NR                          29.95        15.99            1.87
*REC:    1                          29.95        15.99            1.87
                                                                      
     2  NR      HITCHCOCK A.        19.98         9.00            2.22
                                                                      
*SUB:   NR                          19.98         9.00            2.22
                                                                      
        PG      HITCHCOCK A.        19.98         9.00            2.22
                HITCHCOCK A.        19.98         9.00            2.22
                                                                      
*SUB:   PG                          39.96        18.00            4.44
     2  PG13    HITCHCOCK A.        19.98         9.00            2.22
                                                                      
*SUB:   PG13                        19.98         9.00            2.22
                                                                      
        R       HITCHCOCK A.        19.98         9.00            2.22
                                                                      
*SUB:   R                           19.98         9.00            2.22
*REC:    2                          99.90        45.00            2.22
                                                                      
                                                                      
TOTAL                              129.85        60.99            2.13

Wenn Sie die BY-Felder vertauschen, summiert die Gesamtsummenzeile sowohl die RATIO-Werte als auch die LISTPR- und WHOLESALEPR-Werte, da der SUBTOTAL-Befehl die Gesamtsummenzeile steuert:

TOTAL                              129.85        60.99           12.97

Sie können die Operation ändern, die auf der Gesamtsummenebene ausgeführt wird, indem Sie der Anfrage den folgenden Befehl hinzufügen:

ON TABLE RECOMPUTE

Die Gesamtsummenzeile zeigt dann die neuberechneten Werte an:

TOTAL                              129.85        60.99            2.13

Nach oben

Beispiel: SUB-TOTAL mit mehreren Summenbefehlen verwenden

In der folgenden Anfrage dehnt der SUB-TOTAL-Befehl seine Funktion auf das DIRECTOR-Sortierfeld aus (dies können Sie in der Gesamtsummenzeile für HITCHCOCK sehen, in der die RATIO-Werte zwischensummiert aber nicht neu berechnet werden).

SUB-TOTAL wird nicht an das RATING-Sortierfeld weitergegeben, das einen eigenen RECOMPUTE-Befehl hat und für dieses Sortierfeld wird der RATIO-Wert neuberechnet. Die Gesamtsummenzeile wird erneut berechnet, da RECOMPUTE in einem Sortierfeld einer höheren Ebene als SUB-TOTAL durchgeführt wird.

TABLE FILE MOVIES
PRINT LISTPR WHOLESALEPR
COMPUTE RATIO = LISTPR/WHOLESALEPR;
BY DIRECTOR
BY RATING
BY COPIES
WHERE COPIES LT 3
WHERE DIRECTOR EQ 'HITCHCOCK A.'
ON COPIES SUB-TOTAL AS '*SUB: '
ON RATING RECOMPUTE AS '*REC:  '
END

Die Ausgabe ist:

DIRECTOR           RATING  COPIES  LISTPR  WHOLESALEPR           RATIO
--------           ------  ------  ------  -----------           -----
HITCHCOCK A.       NR           2   19.98         9.00            2.22
                                                                      
*SUB:    2                          19.98         9.00            2.22
*REC:   NR                          19.98         9.00            2.22
                                                                      
                   PG           2   19.98         9.00            2.22
                                    19.98         9.00            2.22
                                                                      
*SUB:    2                          39.96        18.00            4.44
*REC:   PG                          39.96        18.00            2.22
                                                                      
                   PG13         2   19.98         9.00            2.22
*SUB:    2                          19.98         9.00            2.2
*REC:   PG13                        19.98         9.00            2.2
                                                                     
HITCHCOCK A.       R            2   19.98         9.00            2.2
                                                                     
*SUB:    2                          19.98         9.00            2.2
*REC:   R                           19.98         9.00            2.2
*TOTAL DIRECTOR HITCHCOCK A.        99.90        45.00           11.1
                                                                     
                                                                     
TOTAL                               99.90        45.00            2.2

Nach oben

Beispiel: Mehrere Summenbefehle mit Präfixoperatoren verwenden

Die folgende Anfrage zeigt den durchschnittlichen Wert von LISTPR und den neu berechneten Wert von RATIO in den Zeilen an, die mit dem Sortierfeld RATING assoziiert sind. Der SUB-TOTAL-Befehl, der mit dem Sortierfeld COPIES assoziiert ist, wird an alle Felder in den DIRECTOR-Sortierfeldzeilen weitergegeben und an die WHOLESALEPR- und RATIO1-Spalten, die mit dem RATING-Sortierfeld assoziiert sind. Die Gesamtsummenzeile wird in dieser Anfrage unterdrückt.

TABLE FILE MOVIES
PRINT LISTPR WHOLESALEPR
COMPUTE RATIO/D6.2 = LISTPR/WHOLESALEPR;
COMPUTE RATIO1/D6.2 = LISTPR/WHOLESALEPR;
BY DIRECTOR
BY RATING
BY COPIES
WHERE COPIES LT 3
  WHERE DIRECTOR EQ 'KAZAN E.'
  ON RATING  RECOMPUTE  AVE. LISTPR  RATIO AS '*REC:  '
  ON COPIES  SUB-TOTAL                     AS '*SUB:  '
  ON TABLE NOTOTAL
END

In der Ausgabe:

Die Ausgabe ist:

DIRECTOR           RATING  COPIES  LISTPR  WHOLESALEPR   RATIO  RATIO1
--------           ------  ------  ------  -----------   -----  ------
KAZAN E.           NR           1   24.98        14.99    1.67    1.67
 
*SUB:    1                          24.98        14.99    1.67    1.67
 
                                2   19.95         9.99    2.00    2.00
 
*SUB:    2                          19.95         9.99    2.00    2.00
*REC:   NR                          22.46        24.98     .90    3.66
*TOTAL DIRECTOR KAZAN E.            44.93        24.98    3.66    3.66

Nach oben

Beispiel: Weitergabe von Summenbefehlen mit Feldlisten

In der folgenden Anfrage hat der RECOMPUTE-Befehl eine Feldliste.

SET SUMMARYLINES = OLD
TABLE FILE MOVIES
PRINT LISTPR WHOLESALEPR
COMPUTE RATIO/D6.2 = LISTPR/WHOLESALEPR;
COMPUTE RATIO1/D6.2 = LISTPR/WHOLESALEPR;
BY DIRECTOR
BY RATING
BY COPIES
WHERE COPIES LT 3
  WHERE DIRECTOR EQ 'KAZAN E.'
  ON RATING RECOMPUTE LISTPR RATIO AS '*REC:  '
  ON COPIES SUB-TOTAL AS '*SUB:  '
END

Mit SUMMARYLINES=OLD haben in der Reportausgabe nur diese Felder Werte:

DIRECTOR           RATING  COPIES  LISTPR  WHOLESALEPR   RATIO  RATIO1
--------           ------  ------  ------  -----------   -----  ------
KAZAN E.           NR           1   24.98        14.99    1.67    1.67
 
*SUB:     1                         24.98                 1.67
 
                                2   19.95         9.99    2.00    2.00
 
*SUB:     2                         19.95                 2.00
*REC:   NR                          44.93                 1.80
*TOTAL DIRECTOR KAZAN E.            44.93                 3.66
 
 
TOTAL                               44.93                 1.80

Mit SUMMARYLINES=NEW wird SUB-TOTAL an alle Spalten weitergegeben, die sonst leer bleiben würden. Die Gesamtsummenzeile übernimmt den RECOMPUTE-Befehl für die Felder, die in seiner Feldliste aufgelistet sind, und der SUB-TOTAL-Befehl gibt Werte an die anderen Spalten weiter:

DIRECTOR           RATING  COPIES  LISTPR  WHOLESALEPR   RATIO  RATIO1
--------           ------  ------  ------  -----------   -----  ------
KAZAN E.           NR           1   24.98        14.99    1.67    1.67
 
*SUB:     1                         24.98        14.99    1.67    1.67
 
                                2   19.95         9.99    2.00    2.00
 
*SUB:     2                         19.95         9.99    2.00    2.00
*REC:   NR                          44.93        24.98    1.80    3.66
*TOTAL DIRECTOR KAZAN E.            44.93        24.98    3.66    3.66
 
 
TOTAL                               44.93        24.98    1.80    3.66

Nach oben

x
Referenz: Verwendungshinweise für Kombinationen aus Summenbefehlen

WebFOCUS