Zwischensummen aufnehmen

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.


Nach oben

x
Syntax: Zwischensummen erstellen
{BY|ON} fieldname {SUB-TOTAL|SUBTOTAL} [MULTILINES]
      [field1 [AND] field2...] [AS 'text'][WHEN expression;]

Hierbei gilt:

fieldname
Muss der Name eines Feldes in einer Sortierphrase sein. Eine BY-Phrase kann einen Summenbefehl enthalten. Das Produkt aus der Anzahl der Felder, deren Zwischensumme erstellt werden soll, und der Anzahl der Zwischensummen-Ebenen, schließt die für die Anfrage erlaubte Anzahl Anzeigefelder ein. Genauere Informationen über das Bestimmen der maximalen Anzahl für Anzeigefelder, die in einer Anfrage verwendet werden können, siehe Reportdaten anzeigen.
SUB-TOTAL|SUBTOTAL
SUB-TOTAL zeigt Zwischensummen für numerische Werte an, wenn sich der Wert des BY|ON-Feldes ändert. Für Sortierfelder höherer Ebenen werden ebenfalls Zwischensummen angezeigt, sobald sich ihre Werte ändern.

SUBTOTAL zeigt eine Zwischensumme nur an, wenn sich der Wert des angegebenen Sortierfeldes ändert.

MULTILINES
Unterdrückt das Drucken einer Zwischensummenzeile für jeden Sortierumbruch, der nur eine Detailzeile besitzt, da der Zwischensummenwert gleich diesem einen Wert ist. Beachten Sie, dass MULTI-LINES ein Synonym für MULTILINES ist. MULTILINES wird mit horizontalen (ACROSS) Sortierfeldern nicht unterstützt.
field1, field2, ...
Zeigt eine Liste bestimmter Felder an, für die eine Zwischensumme erstellt werden soll. Diese Liste überschreibt den Default, der alle numerischen Anzeigefelder beinhaltet.

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.

AS 'text'
Ermöglicht es Ihnen, ein anderes Label anzugeben. Weitere Informationen zu diesem Thema finden Sie unter Kopfzeilen, Fußzeilen, Titel und Labels verwenden.
WHEN-Formel
Bestimmt die bedingte Anzeige von Zwischensummen, die durch eine boolesche Formel bestimmt wird. Sie müssen die Formel mit einem Semikolon beenden.

Nach oben

x
Syntax: Die Platzierung von Summenzeilen steuern
SET SUBTOTALS = {ABOVE|BELOW}

Hierbei gilt:

ABOVE
Platziert Summenzeilen über den Detailzeilen und zeigt die Sortierfeldwerte in jeder Detailzeile der Reportausgabe an.
BELOW
Platziert Summenzeilen unter den Detailzeilen. BELOW ist der Defaultwert.

Hinweis: SET SUBTOTALS = ABOVE wird mit dem Format EXL2K FORMULA nicht unterstützt.



Beispiel: Zwischensummen über die Daten platzieren

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

Nach oben

x
Referenz: Verwendungshinweise für Zwischensummen


Beispiel: Zwischensummen erzeugen

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             


Beispiel: SUB-TOTAL und SUBTOTAL vergleichen

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