Eine bedingte Formel erstellen

Vorgehensweise:

Eine bedingte Formel weist einen Wert zu, der auf dem Ergebnis einer logischen Formel basiert. Der zugewiesene Wert kann numerisch oder alphanumerisch sein.

Hinweis: Anders als Auswahlkriterien, die IF verwenden, müssen alle alphanumerischen Werte in bedingten Formeln in einfache Anführungszeichen gesetzt werden. z. B. IF COUNTRY EQ 'ENGLAND'.


Nach oben

x
Syntax: Eine bedingte Formel schreiben
IF expression1 THEN expression2 [ELSE expression3]

Hierbei gilt:

expression1
Ist die Formel, die ausgewertet wird, um zu bestimmen, ob dem Feld der Wert von expression2 oder von expression3 zugewiesen wird.
expression2
Ist eine Formel, die ein Format ergibt, das kompatibel ist mit dem Format, das dem Feld zugewiesen ist. Es kann sich um eine bedingte Formel handeln. Wenn dies der Fall ist, müssen Sie sie in Klammern setzen.
expression3
Ist eine Formel, die ein Format ergibt, das kompatibel ist mit dem Format, das dem Feld zugewiesen ist. Ob Sie die Formel in Klammern setzen ist optional.
ELSE
Ist optional, zusammen mit expression3. Wenn Sie jedoch keine ELSE-Bedingung angeben, und die IF-Bedingung nicht erfüllt wird, wird der Wert aus der letzten ausgewerteten Bedingung genommen.

Beachten Sie, dass der endgültige sortierte Report gemischte Werte angeben kann. Dies hängt davon ab, ob ein DEFINE oder ein COMPUTE verwendet wird, und ob ein Datensatz vor oder nach der Aggregation ausgewertet wird.

Die Formeln, die THEN und ELSE folgen, müssen ein Format ergeben, das kompatibel ist mit dem Format, das dem Feld zugewiesen wurde. Jedes dieser Formeln kann selbst eine bedingte Formel sein. Es darf jedoch die Formel, die auf IF folgt, keine IF ... THEN ... ELSE-Formel sein (z. B. IF ... IF ...).



Beispiel: Einen Wert mit einer bedingten Formel angeben

Im folgenden Beispiel wird eine bedingte Formel verwendet, um den Wert NONE dem Feld BANK_NAME zuzuweisen, wenn ihm ein Datenwert fehlt (d. h. wenn das Feld keine Daten in der Datenquelle hat):

DEFINE FILE EMPLOYEE
BANK_NAME/A20 = IF BANK_NAME EQ ' ' THEN 'NONE'
ELSE BANK_NAME;
END
 
TABLE FILE EMPLOYEE
PRINT CURR_SAL AND BANK_NAME
BY EMP_ID BY BANK_ACCT
END

Die Ausgabe ist:

EMP_ID     BANK_ACCT         CURR_SAL  BANK_NAME       
------     ---------         --------  ---------       
071382660                  $11,000.00  NONE            
112847612                  $13,200.00  NONE            
117593129   40950036       $18,480.00  STATE           
119265415                   $9,500.00  NONE            
119329144     160633       $29,700.00  BEST BANK       
123764317  819000702       $26,862.00  ASSOCIATED      
126724188                  $21,120.00  NONE            
219984371                  $18,480.00  NONE            
326179357  122850108       $21,780.00  ASSOCIATED      
451123478  136500120       $16,100.00  ASSOCIATED      
543729165                   $9,000.00  NONE            
818692173  163800144       $27,062.00  BANK ASSOCIATION


Beispiel: Eine True- oder False-Bedingung definieren

Sie können eine true- oder eine false-Bedingung definieren und dann testen, um die Reportausgabe zu steuern. Im folgenden Beispiel wird der Wert TRUE dem Feld MYTEST zugewiesen, wenn eine der relationalen Formeln in Klammern true ist. Es wird dann der Wert von MYTEST getestet:

DEFINE FILE EMPLOYEE
MYTEST= (CURR_SAL GE 11000) OR (DEPARTMENT EQ 'MIS');
END
 
TABLE FILE EMPLOYEE
PRINT CURR_SAL AND DEPARTMENT
BY EMP_ID
IF MYTEST IS TRUE
END

Die Ausgabe ist:

EMP_ID            CURR_SAL  DEPARTMENT
------            --------  ----------
071382660       $11,000.00  PRODUCTION
112847612       $13,200.00  MIS       
117593129       $18,480.00  MIS       
119329144       $29,700.00  PRODUCTION
123764317       $26,862.00  PRODUCTION
126724188       $21,120.00  PRODUCTION
219984371       $18,480.00  MIS       
326179357       $21,780.00  MIS       
451123478       $16,100.00  PRODUCTION
543729165        $9,000.00  MIS       
818692173       $27,062.00  MIS       

Hinweis: Sie können auf eine Bedingung, die TRUE oder FALSE ist, nur mit dem Befehl IF testen. Dies ist mit WHERE nicht gültig.


WebFOCUS