Une valeur calculée est un champ temporaire évalué une fois que toutes les données remplissant les critères de sélection sont récupérées, triées et agrégées. Les valeurs calculées ne sont disponibles que pour la requête de rapport indiquée.
Vous spécifiez la commande COMPUTE dans le corps de la requête de rapport. La commande suit la commande d'affichage et peut, facultativement, être précédee par AND. Vous pouvez calculer plus d'un champ à l'aide d'une seule commande COMPUTE.
Les conditions suivantes s'appliquent à l'utilisation de valeurs calculées :
ACROSS acrossfield [AND] COMPUTE compute_expression; COLUMNS values
COMPUTE fld [/format]= expression;[AS 'title'] [NOPRINT] [IN [+n]]
où :
Le nom peut être tout nom conforme aux règles de nommage de champs WebFOCUS.
Il est important de ne pas utiliser les noms de champ de type Cn, En et Xn (où n est toute séquence composée d'un ou de deux chiffres), car ils sont destinés à d'autres emplois.
COMPUTE fld [/format]= ;
où :
Le nom peut être tout nom conforme aux règles de nommage de champs WebFOCUS.
Il est important de ne pas utiliser les noms de champ de type Cn, En et Xn (où n est toute séquence composée d'un ou de deux chiffres), car ils sont destinés à d'autres emplois.
Dans l'exemple suivant, la commande COMPUTE crée un champ temporaire, REVENUE, en fonction du produit de UNIT_SOLD et RETAIL_PRICE, et affiche ces informations pour New York City. Le format D12.2M indique le format de champ pour REVENUE et la commande AS change les en-têtes de colonne par défaut pour UNIT_SOLD et RETAIL_PRICE. REVENUE n'est disponible que pour cette requête de rapport.
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
La sortie est :
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
Il est parfois plus pratique de référencer un champ dans une expression COMPUTE en indiquant sa position de colonne de rapport plutôt que son nom. Cette option se révèle particulièrement utile lorsqu'un même champ est indiqué pour plusieurs colonnes de rappport.
La possibilité de référencement de colonnes devient important, voire primordial, lorsque le même nom de champ est utilisé de nombreuses façons différentes. L'image suivante montre que les colonnes générées par les commandes d'affichage (qu'elles soient affichées ou non) peuvent être désignées selon le système : C1 pour la première colonne, C2 pour la deuxième colonne, et ainsi de suite. Les colonnes de champ BY ne sont pas comptées.
Pour plus d'informations sur les numéros de référence des colonnes, consultez Attribution de numéros de référence de colonne.
L'exemple suivant illustre le référencement de colonnes dans une commande COMPUTE :
TABLE FILE CAR SUM AVE.DEALER_COST SUM AVE.DEALER_COST AND COMPUTE RATIO=C1/C2; BY COUNTRY END
Les colonnes générées par les commandes d'affichage peuvent être désignées selon le système : C1 pour la première colonne, C2 pour la deuxième colonne, et ainsi de suite. Les colonnes de champ BY ne sont pas comptées.
La sortie est :
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
Si la commande COMPUTE est lancée immédiatement après une phrase ACROSS, seul un type récapitulatif du calcul s'effectue pour toutes les colonnes. Comme COMPUTE fait partie d'une commande d'affichage, une nouvelle colonne est calculée pour chaque ensemble de valeurs.
TABLE FILE SALES SUM UNIT_SOLD COMPUTE NEWVAL = UNIT_SOLD * RETAIL_PRICE; ACROSS CITY END
La première page de sortie est :
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
Dans la commande COMPUTE suivante, C1, C2, C3, C4, C5 et C6 sont des référencements de colonnes et COMPUTE suit la phrase ACROSS. La commande COMPUTE s'effectue une fois pour le rapport, et les résultats s'affichent à droite de tous les groupes de tri.
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
La sortie est :
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
Il est possible de trier un rapport sur un champ virtuel ou sur une valeur calculée. Pour trier sur une valeur calculée, il faut utiliser la phrase BY TOTAL dans la requête. Pour plus de détails, consultez Trier et agréger des colonnes de rapport.
Vous pouvez effectuer une présélection sur les valeurs générées par des expressions COMPUTE à l'aide du test WHERE TOTAL, comme le décrit Sélection d'enregistrements pour votre rapport.
WebFOCUS |