Vorgehensweise: |
Sie können auf Sortierung basierende Optionen wie Zwischensummen und andere Summenzeilen, Sortierkopfzeilen und -fußzeilen, Unterstriche, übersprungene Zeilen und Seitenumbrüche bedingt aufnehmen und Seitennummerierung bedingt neu starten, indem Sie in Ihrer Reportanfrage die Phrase ON verwenden. Die Phrase WHEN gibt eine Bedingung an, die ausgewertet wird für jeden Wert eines vertikalen Sortierfeldes (BY). Die auf Sortierung basierende Option (Summenzeile, Unterstrich, übersprungene Zeile oder Seitenumbruch) wird auf jede Sortiergruppe angewendet, die die Bedingung erfüllt, und wird von Sortiergruppen ignoriert, die die Bedingung nicht erfüllen.
Die WHEN-Phrase ist eine Erweiterung der Phrasen ON sortfield und BYsortfield. Sie können eine WHEN-Phrase für jede sortfield-Phrase angeben. Beispiel:
ON ORDER_NUM UNDER-LINE WHEN QUANTITY GT 5 ON COUNTRY PAGE-BREAK WHEN LINEPRICE GT 200000
Falls eine sortfield-Phrase mehrere Sortieroptionen enthält, können Sie für jede Option eine andere WHEN-Phrase angeben. Beispiel:
ON ORDER_NUM SKIP-LINE WHEN QUANTITY GT 5; UNDER-LINE WHEN QUANTITY GT 10
{BY|ON} sortfield [option WHEN condition [;] [AND]]...
Hierbei gilt:
Diese sind in der Funktionsweise identisch. Der einzige Unterschied besteht in der Syntax (BY ermöglicht es Ihnen, das auf Sortierung basierende Feature als Teil der Sortierphrase anzugeben, während ON es Ihnen ermöglicht, es von der Sortierphrase separat anzugeben). Weitere Informationen finden Sie in der Dokumentation für die sortfield-Option, die Sie verwenden.
Ist der Name eines vertikalen Sortierfeldes (BY).
Ist eines der folgenden auf Sortierung basierenden Features: PAGE-BREAK, PAGE-BREAK REPAGE, RECAP, RECOMPUTE, SKIP-LINE, SUBFOOT, SUBHEAD, SUBTOTAL, SUB-TOTAL, SUMMARIZE, UNDER-LINE.
Wenn Sie SUBHEAD oder SUBFOOT angeben, müssen Sie die WHEN-Phrase in der Zeile nach dem Text der Kopf- oder Fußzeile platzieren.
Ist eine logische Formel. Weitere Informationen finden Sie unter Formeln verwenden.
Sie müssen nichtnumerische Konstanten, wie z. B. Zeichenfolgen und Daten, in einfache Anführungszeichen setzen.
Wenn die Bedingung ein numerisches Detailfeld auswertet, wertet sie die Summe der Detailfeldwerte innerhalb jeder Sortiergruppe aus und nicht die individuellen Detailwerte. Beispielsweise wertet in der Anfrage
TABLE FILE CENTHR PRINT ID_NUM SALARY BY PLANT ON PLANT UNDER-LINE WHEN SALARY GT 2000000 END
die Bedingung die Summe der SALARY-Werte innerhalb jedes PLANT-Wertes aus.
Wenn die Bedingung ein alphanumerisches Feld auswertet, das in einer Sortiergruppe mehrfach vorkommt, wertet sie den letzten Wert des Feldes in jeder Sortiergruppe aus.
Sie können auf ein Feld in der Bedingung einen Präfixoperator anwenden (z. B. WHEN AVE.PRICE GT 300), selbst wenn der Operator und das Feld im Report nicht verwendet werden. Die Aggregation wird für jeden Wert des Sortierfeldes durchgeführt.
Wenn die Phrase BY oder ON mehrere Optionen enthält, trifft die WHEN-Bedingung nur auf die Option zu, die ihr direkt vorangestellt ist.
Ist erforderlich, wenn WHEN-Phrasen für mehrere Optionen in dieser BY- oder ON-Phrase aufgenommen werden. In allen anderen Situationen ist es optional und verbessert einfach nur die Lesbarkeit.
Kann zwischen zwei Sets von sortfield-Optionen eingefügt werden, um die Lesbarkeit zu verbessern.
In diesem Beispiel ist zu sehen, wie Sie eine Zwischenfußzeile in einem Report bedingt anzeigen. Dieser Report verwendet eine bedingte Sortierfußzeile, um die Aufmerksamkeit auf Bestellungen mit einer Gesamtsumme von weniger als 200.000 zu lenken.
TABLE FILE CENTORD
HEADING
"Order Revenue"
" "
SUM ORDER_DATE LINEPRICE AS 'Order,Total:'
BY HIGHEST 5 ORDER_NUM
ON ORDER_NUM
SUBFOOT
"--- Order total is less than $200,000 ---"
" "
WHEN LINEPRICE LT 200000
ON TABLE SET PAGE-NUM OFF
ON TABLE SET STYLESHEET *
TYPE=REPORT, GRID=OFF, $
ENDSTYLE
END
Die Ausgabe ist:
In diesem Beispiel ist zu sehen, wie Sie mehrere Bedingungen auf eine Reportkomponente anwenden. Dieser Report verwendet bedingte Sortierfußzeilen, um zwischen Bestellungen zu unterscheiden, die eine Gesamtsumme von mehr als 200.000 haben, und solchen, die eine Gesamtsumme von weniger als 200.000 haben.
Beachten Sie, dass eine Sortierphrase (ON ORDER_NUM) mehrere Optionen angibt, die sich auf die Sortierung beziehen (zwei unterschiedliche SUBFOOT-Phrasen), und dass jede Option ihre eigene WHEN-Phrase hat.
TABLE FILE CENTORD
HEADING
"Order Revenue"
" "
SUM ORDER_DATE LINEPRICE AS 'Order,Total:'
BY HIGHEST 5 ORDER_NUM
ON ORDER_NUM
SUBFOOT
"--- Order total is less than $200,000 ---"
" "
WHEN LINEPRICE LT 200000;
SUBFOOT
"+++ Order total is greater than or equal to $200,000 +++"
" "
WHEN LINEPRICE GE 200000;
ON TABLE SET PAGE-NUM OFF
ON TABLE SET STYLESHEET *
TYPE=REPORT, GRID=OFF, $
ENDSTYLE
END
Die Ausgabe ist:
WebFOCUS |