Référence : |
Vous pouvez spécifier une différente opération récapitulative pour chaque rupture de tri (champ BY ou ACROSS).
S'il existe plusieurs commandes récapitulatives pour le même champ BY, le message suivant s'affiche et la dernière commande récapitulative spécifiée dans la requête est employée :
(FOC36359) MORE THAN 1 SUBTOTAL/SUB-TOTAL/RECOMPUTE/SUMMARIZE
SUMMARIZE et SUB-TOTAL, qui propagent leurs opérations récapitulatives aux sort breaks de niveaux supérieurs, sautent ceux-ci qui ont leurs propres commandes récapitulatives. La propagation des opérations récapitulatives s'effectue selon que le traitement d'opérateur préfixe soit utilisé pour les lignes récapitulatives. Si les opérateurs préfixe :
Les opérateurs préfixe sur les lignes récapitulatives ont pour résultat les mêmes valeurs, que la commande soit RECOMPUTE/SUMMARIZE ou SUBTOTAL/SUB-TOTAL. Pour un champ calculé, l'opérateur préfixe ne s'y applique pas, la valeur est recalculée en utilisant l'expression dans la commande COMPUTE et les valeurs de la ligne récapitulative.
Lorsque vous utilisez différentes commandes récapitulatives pour différents champs de tri, la ligne de total général par défaut hérite la commande récapitulative associée au premier champ de tri dans la requête. Vous pouvez changer l'opération qui s'effectue au niveau du total général en utilisant la phrase ON TABLE pour spécifier une commande récapitulative particulière.
Remarque : le total général est considéré comme le plus haut niveau de tri. Par conséquent, bien que vous puissiez utiliser les commandes SUMMARIZE ou SUB-TOTAL au niveau du total général, ces commandes s'appliquent uniquement au total général et ne se propagent pas vers d'autres lignes du rapport. Au niveau du total général, la commande SUMMARIZE fonctionne comme une commande RECOMPUTE, et la commande SUB-TOTAL fonctionne come une commande SUBTOTAL.
Dans la requête suivante, le premier champ de tri spécifié est COPIES, qui est associé à la commande RECOMPUTE. Par conséquent, sur la ligne de total général, la valeur de RATIO est recalculée correctement et les valeurs de LISTPR et WHOLESALEPR sont additionnées (parce que ceci est l'opération par défaut lorsque le champ n'est pas calculé par une commande COMPUTE).
TABLE FILE MOVIES PRINT DIRECTOR LISTPR WHOLESALEPR COMPUTE RATIO = LISTPR/WHOLESALEPR; BY COPIES BY RATING WHERE COPIES LT 3 WHERE DIRECTOR EQ 'DISNEY W.' OR 'HITCHCOCK A.' ON COPIES RECOMPUTE AS '*REC: ' ON RATING SUBTOTAL AS '*SUB: ' END
La sortie est :
COPIES RATING DIRECTOR LISTPR WHOLESALEPR RATIO ------ ------ -------- ------ ----------- ----- 1 NR DISNEY W. 29.95 15.99 1.87 *SUB: NR 29.95 15.99 1.87 *REC: 1 29.95 15.99 1.87 2 NR HITCHCOCK A. 19.98 9.00 2.22 *SUB: NR 19.98 9.00 2.22 PG HITCHCOCK A. 19.98 9.00 2.22 HITCHCOCK A. 19.98 9.00 2.22 *SUB: PG 39.96 18.00 4.44 2 PG13 HITCHCOCK A. 19.98 9.00 2.22 *SUB: PG13 19.98 9.00 2.22 R HITCHCOCK A. 19.98 9.00 2.22 *SUB: R 19.98 9.00 2.22 *REC: 2 99.90 45.00 2.22 TOTAL 129.85 60.99 2.13
Si vous inversez les champs BY, la ligne de total général totalise les valeurs de RATIO ainsi que les valeurs de LISTPR et de WHOLESALEPR parce que la commande SUBTOTAL contrôle la ligne de total général :
TOTAL 129.85 60.99 12.97
Vous pouvez changer l'opération qui s'effectue au niveau du total général en ajoutant la commande suivante à la requête :
ON TABLE RECOMPUTE
La ligne de total général affiche par la suite les valeurs recalculées :
TOTAL 129.85 60.99 2.13
Dans la requête suivante, la commande SUB-TOTAL propage son opération au champ de tri DIRECTOR (voir la ligne de total général pour HITCHCOCK, où le sous total des valeurs de RATIO est généré, mais non pas recalculé).
SUB-TOTAL ne se propage pas vers le champ de tri RATING, qui a sa propre commande RECOMPUTE, et la valeur de RATIO est recalculée pour ce champ de tri. La ligne de total général est recalculée parce que l'opération RECOMPUTE s'effectue à un champ de tri à un niveau supérieur à SUB-TOTAL.
TABLE FILE MOVIES PRINT LISTPR WHOLESALEPR COMPUTE RATIO = LISTPR/WHOLESALEPR; BY DIRECTOR BY RATING BY COPIES WHERE COPIES LT 3 WHERE DIRECTOR EQ 'HITCHCOCK A.' ON COPIES SUB-TOTAL AS '*SUB: ' ON RATING RECOMPUTE AS '*REC: ' END
La sortie est :
DIRECTOR RATING COPIES LISTPR WHOLESALEPR RATIO -------- ------ ------ ------ ----------- ----- HITCHCOCK A. NR 2 19.98 9.00 2.22 *SUB: 2 19.98 9.00 2.22 *REC: NR 19.98 9.00 2.22 PG 2 19.98 9.00 2.22 19.98 9.00 2.22 *SUB: 2 39.96 18.00 4.44 *REC: PG 39.96 18.00 2.22 PG13 2 19.98 9.00 2.22 *SUB: 2 19.98 9.00 2.2 *REC: PG13 19.98 9.00 2.2 HITCHCOCK A. R 2 19.98 9.00 2.2 *SUB: 2 19.98 9.00 2.2 *REC: R 19.98 9.00 2.2 *TOTAL DIRECTOR HITCHCOCK A. 99.90 45.00 11.1 TOTAL 99.90 45.00 2.2
La requête suivante imprime la valeur moyenne de LISTPR et la valeur recalculée de RATIO sur les lignes associées au champ de tri RATING. La commande SUB-TOTAL associée au champ de tri COPIES se propage vers tous les champs sur les lignes du champ de tri DIRECTOR et aux colonnes WHOLESALEPR et RATIO1 associées au champ de tri RATING. La ligne de total général ne s'affiche pas dans cette requête.
TABLE FILE MOVIES PRINT LISTPR WHOLESALEPR COMPUTE RATIO/D6.2 = LISTPR/WHOLESALEPR; COMPUTE RATIO1/D6.2 = LISTPR/WHOLESALEPR; BY DIRECTOR BY RATING BY COPIES WHERE COPIES LT 3 WHERE DIRECTOR EQ 'KAZAN E.' ON RATING RECOMPUTE AVE. LISTPR RATIO AS '*REC: ' ON COPIES SUB-TOTAL AS '*SUB: ' ON TABLE NOTOTAL END
Dans la sortie :
La sortie est :
DIRECTOR RATING COPIES LISTPR WHOLESALEPR RATIO RATIO1 -------- ------ ------ ------ ----------- ----- ------ KAZAN E. NR 1 24.98 14.99 1.67 1.67 *SUB: 1 24.98 14.99 1.67 1.67 2 19.95 9.99 2.00 2.00 *SUB: 2 19.95 9.99 2.00 2.00 *REC: NR 22.46 24.98 .90 3.66 *TOTAL DIRECTOR KAZAN E. 44.93 24.98 3.66 3.66
Dans la requête suivante, la commande RECOMPUTE a une liste de champs.
SET SUMMARYLINES = OLD TABLE FILE MOVIES PRINT LISTPR WHOLESALEPR COMPUTE RATIO/D6.2 = LISTPR/WHOLESALEPR; COMPUTE RATIO1/D6.2 = LISTPR/WHOLESALEPR; BY DIRECTOR BY RATING BY COPIES WHERE COPIES LT 3 WHERE DIRECTOR EQ 'KAZAN E.' ON RATING RECOMPUTE LISTPR RATIO AS '*REC: ' ON COPIES SUB-TOTAL AS '*SUB: ' END
Avec SUMMARYLINES=OLD, seulement ces champs ont des valeurs dans la sortie de rapport :
DIRECTOR RATING COPIES LISTPR WHOLESALEPR RATIO RATIO1 -------- ------ ------ ------ ----------- ----- ------ KAZAN E. NR 1 24.98 14.99 1.67 1.67 *SUB: 1 24.98 1.67 2 19.95 9.99 2.00 2.00 *SUB: 2 19.95 2.00 *REC: NR 44.93 1.80 *TOTAL DIRECTOR KAZAN E. 44.93 3.66 TOTAL 44.93 1.80
Avec SUMMARYLINES=NEW, SUB-TOTAL se propage vers toutes les colonnes qui n'auraient pas été remplies autrement. La ligne de total général hérite la commande RECOMPUTE pour les champs listés dans sa liste de champs, et la commande SUB-TOTAL se propage vers les autres colonnes :
DIRECTOR RATING COPIES LISTPR WHOLESALEPR RATIO RATIO1 -------- ------ ------ ------ ----------- ----- ------ KAZAN E. NR 1 24.98 14.99 1.67 1.67 *SUB: 1 24.98 14.99 1.67 1.67 2 19.95 9.99 2.00 2.00 *SUB: 2 19.95 9.99 2.00 2.00 *REC: NR 44.93 24.98 1.80 3.66 *TOTAL DIRECTOR KAZAN E. 44.93 24.98 3.66 3.66 TOTAL 44.93 24.98 1.80 3.66
(FOC36376) CANNOT COMBINE SUBTOTAL/RECOMPUTE STYLES WHENSUMMARYLINES=OLD
Il est possible d'empêcher ce message en définissant le paramètre SUMMARYLINES=NEW afin d'invoquer le traitement d'opérateurs préfixe.
WebFOCUS |