Ein berechneter Wert ist ein Temporärfeld, das ausgewertet wird, nachdem alle Daten, die die Auswahlkriterien erfüllen, abgerufen, sortiert und addiert wurden. Berechnete Werte sind nur für die angegebene Reportanfrage verfügbar.
Sie geben den COMPUTE-Befehl im Hauptteil der Reportanfrage an, nach dem Anzeigebefehl und optional eingeführt durch AND. Sie können mehr als ein Feld mit nur einem COMPUTE-Befehl berechnen.
Verwenden Sie den Tab Computes, um einen berechneten Wert zu erstellen. Sie können auf den Tab Computes nur zugreifen, wenn Sie Reports im ReportPainter erstellen.
Folgendes trifft auf die Verwendung berechneter Werte zu:
ACROSS acrossfield [AND] COMPUTE compute_expression; COLUMNS values
COMPUTE fld [/format]= expression;[AS 'title'] [NOPRINT] [IN [+n]]
Hierbei gilt:
Der Name kann ein beliebiger Name sein, der die WebFOCUS-Regeln für die Benennung von Feldern einhält.
Verwenden Sie keine Feldnamen des Typs Cn, En und Xn (wobei n jede Sequenz aus zwei Ziffern ist), da diese für andere Verwendungen vorgesehen sind.
COMPUTE fld [/format]= ;
Hierbei gilt:
Der Name kann ein beliebiger Name sein, der die WebFOCUS-Regeln für die Benennung von Feldern einhält.
Verwenden Sie keine Feldnamen des Typs Cn, En und Xn (wobei n jede Sequenz aus zwei Ziffern ist), da diese für andere Verwendungen vorgesehen sind.
Im folgenden Beispiel erstellt der Befehl COMPUTE ein Temporärfeld (REVENUE) basierend auf dem Produkt aus UNIT_SOLD und RETAIL_PRICE, und zeigt diese Informationen für New York City an. Das Format D12.2M gibt das Feldformat für REVENUE an und der AS-Befehl ändert die Default-Spaltenkopfzeilen für UNIT_SOLD und RETAIL_PRICE. REVENUE ist nur verfügbar für diese Reportanfrage.
TABLE FILE SALES HEADING CENTER "NEW YORK PROFIT REPORT" " " SUM UNIT_SOLD AS 'UNITS,SOLD' RETAIL_PRICE AS 'RETAIL,PRICE' COMPUTE REVENUE/D12.2M = UNIT_SOLD * RETAIL_PRICE; BY PROD_CODE AS 'PROD,CODE' WHERE CITY EQ 'NEW YORK' END
Die Ausgabe ist:
NEW YORK PROFIT REPORT PROD UNITS RETAIL CODE SOLD PRICE REVENUE ---- ----- ------ ------- B10 30 $.85 $25.50 B17 20 $1.89 $37.80 B20 15 $1.99 $29.85 C13 15 $1.99 $29.85 C14 18 $2.05 $36.90 C17 12 $2.09 $25.08 D12 20 $2.09 $41.80 E1 30 $.89 $26.70 E2 33 $.99 $32.67 E3 35 $1.09 $38.15
Im ReportPainter:
Die Dialogbox Reportoptionen wird mit dem Tab Computes geöffnet.
In einem COMPUTE-Befehl ist es manchmal praktisch, auf ein Feld mit der Position seiner Reportspalte zu verweisen, anstatt mit dem Namen. Diese Option ist besonders hilfreich, wenn dasselbe Feld für mehrere Reportspalten angegeben wurde.
Spaltenverweise sind unerlässlich, wenn Sie denselben Feldnamen auf mehrere Weisen verwenden. In der folgenden Abbildung ist zu sehen, dass auf Spalten, die von Anzeigebefehlen erzeugt werden (ob angezeigt oder nicht), verwiesen werden kann als C1 für die erste Spalte, C2 für die zweite Spalte, usw. Die BY-Feldspalten werden nicht gezählt.
Zusätzliche Informationen über Spaltenverweisnummern finden Sie unter Spaltenverweisnummern zuweisen.
Im folgenden Beispiel sehen Sie Positionsfeldverweise in einem COMPUTE-Befehl:
TABLE FILE CAR SUM AVE.DEALER_COST SUM AVE.DEALER_COST AND COMPUTE RATIO=C1/C2; BY COUNTRY END
Auf die Spalten, die von Anzeigebefehlen erzeugt werden, kann verwiesen werden als C1 für die erste Spalte (AVE.DEALER_COST), C2 für die zweite Spalte (AVE.DEALER_COST BY COUNTRY), usw. Die BY-Feldspalten werden nicht gezählt.
Die Ausgabe ist:
AVE AVE DEALER_COST COUNTRY DEALER_COST RATIO ----------- ------- ----------- ----- 7,989 ENGLAND 9,463 .84 FRANCE 4,631 1.73 ITALY 10,309 .77 JAPAN 2,756 2.90 W GERMANY 7,795 1.02
Wenn der COMPUTE-Befehl die Compute-Formel direkt nach einer ACROSS Across-Phrase ausgegeben wird, wird nur ein Recap der Berechnung einmal für alle Spalten durchgeführt. COMPUTE wird als Teil des Anzeigebefehls verwendet, so dass eine neue Spalte für jedes Werteset berechnet wird.
TABLE FILE SALES SUM UNIT_SOLD COMPUTE NEWVAL = UNIT_SOLD * RETAIL_PRICE; ACROSS CITY END
Die erste Seite der Ausgabe ist:
CITY NEW YORK NEWARK STAMFORD UNIONDALE UNIT_SOLD NEWVAL UNIT_SOLD NEWVAL UNIT_SOLD NEWVAL UNIT_SOLD NEWVAL -------------------------------------------------------------------------------- 162 1,764.18 42 104.16 376 4,805.28 65 297.70
Im folgenden COMPUTE-Befehl sind C1, C2, C3, C4, C5 und C6 Positionsspaltenverweise und der COMPUTE-Befehl folgt auf die ACROSS-Phrase. Der COMPUTE wird für den Report einmal durchgeführt, und die Ergebnisse werden rechts neben den Sortiergruppen angezeigt.
TABLE FILE SALES SUM UNIT_SOLD AND RETURNS WHERE DATE GE '010' AND DATE LE '1031' ACROSS DATE COMPUTE TOT_UNITS/D5=C1 + C3 + C5; TOT_RETURNS = C2 + C4 + C6; END
Die Ausgabe ist:
DATE 10/17 10/18 10/19 TOT_UNITS TOT_RETURNS TOT_UNITS TOT_RETURNS UNIT_SOLD RETURNS UNIT_SOLD RETURNS UNIT_SOLD RETURNS ---------------------------------------------------------------------------------------------- 162 15 78 2 29 1 269 18.00
Sie können einen Report nach einem virtuellen Feld oder einem berechneten Wert sortieren. Um nach einem berechneten Wert zu sortieren, müssen Sie die Phrase BY TOTAL in Ihrer Anfrage verwenden. Genaueres finden Sie unter Reportspalten sortieren und aggregieren.
Sie können mit Werten filtern, die durch COMPUTE-Befehle erzeugt wurden, indem Sie den WHERE TOTAL-Test verwenden, wie es beschrieben ist unter Datensätze für einen Report auswählen.
Sie können mit Werten filtern, die von Compute-Formeln erzeugt werden, indem Sie den WHERE TOTAL-Test verwenden.
WebFOCUS |