Cómo manipular los valores de resumen con operadores de prefijos

En esta sección:

Cómo:

Referencia:

Puede utilizar los comandos SUBTOTAL, SUB-TOTAL, RECOMPUTE y SUMMARIZE en el nivel ON TABLE, para especificar el tipo de operación de resumen que se va a usar para producir la línea de total general en el informe.

Además, se pueden utilizar operadores de prefijo con las opciones de resumen SUBTOTAL, SUB-TOTAL, RECOMPUTE y SUMMARIZE tanto en el nivel de salto de clasificación como en el de total general.

Las operaciones de prefijo en líneas de resumen se ejecutan en los valores recuperados, seleccionados y resumidos que se convierten en las líneas de detalle del informe. A diferencia de las operaciones de prefijo basadas en campos, éstas no se ejecutan en cada registro que ingrese.

Cada tipo de resumen cuenta con su propio propósito y maneja los operadores de prefijo de forma apropiada para el tipo de información de resumen que hay que mostrar. Por ejemplo, si utiliza AVE. en un salto de clasificación, se produce un promedio en el grupo de clasificación.

Los campos alfanuméricos se pueden mostrar también en líneas de resumen. Para lograr esto, debe listar de forma explícita el nombre del campo alfanumérico en el comando de resumen, o bien usar el comodín asterisco (*) para mostrar todos los campos.

En la misma línea de resumen se muestran diferentes operaciones de dos frases ON para el mismo salto de clasificación, que permiten una mezcla de operaciones en líneas de resumen. La línea de total general alimenta todos los campos alimentados por cualquier comando de resumen, incluidos los campos no especificados en el comando de total general.

Si se hace referencia al mismo campo en más de una frase ON para el mismo salto de clasificación, se aplica la última función especificada.

Para campos numéricos, se admiten los operadores de prefijo que aparecen a continuación:

Para campos alfanuméricos, se admiten los operadores de prefijo que aparecen a continuación:


Principio de página

x
Sintaxis: Cómo Utilizar operadores de prefijo con valores de resumen
{BY|ON} breakfield [AS 'text1'] sumoption [MULTILINES]
        [pref. ] [*|[field1 [[pref2. ] field2 ...]]]
        [AS 'text2'] [WHEN expression;]

Para reemplazar el total general predeterminado, utilice la siguiente sintaxis:

ON TABLE sumoption [pref. ][field1 [[pref2. ]field2 ...]] [AS 'text2']

donde:

breakfield
Es el campo de clasificación cuyos cambios de valores han provocado la operación de resumen. Una frase BY puede incluir un comando de resumen. Cuando cambia el valor del campo de clasificación, provoca la operación de resumen.
sumoption
Puede ser uno de los siguientes: SUBTOTAL, SUB-TOTAL, RECOMPUTE o SUMMARIZE.
'text1'
Es el encabezado de la columna que se usará para el campo de salto en la salida del informe.
MULTILINES
Suprime la impresión de una línea de resumen para cada salto de clasificación que tenga sólo una línea de detalle. Tenga en cuenta que MULTILINES suprime la línea de resumen aun si se utiliza un operador de prefijo para especificar una operación diferente para la línea de resumen. MULTI-LINES es sinónimo de MULTILINES. No se admite MULTILINES con campos de clasificación horizontal (ACROSS).
pref.
Es el operador de prefijo. Cuando ha sido especificado sin una lista de campo, el operador de prefijo se aplica a cada columna numérica en la salida de informe y cada columna numérica se alimenta con valores en la fila de resumen.
*
Incluye todos los campos de visualización en la línea de resumen. Si se especifica un operador de prefijo, se aplica a todos los campos. Si no se admite el operador de prefijo con campos alfanuméricos, no se incluyen dichos campos en la línea de resumen.
[field1 [field2 ... fieldn]]
Produce el tipo de resumen especificado por sumoption para los campos listados. Si no se lista ningún nombre de campo, se produce un resumen para cada columna numérica en la salida de informe.
pref. field1 [field2 ... fieldn] [pref2. fieldm ...]
El primer operador de prefijo se aplica de field1 hasta fieldn. El segundo operador de prefijo se aplica a fieldm. Sólo los campos especificados se completan con valores en la fila de resumen. Debe separarse cada operador de prefijo del siguiente nombre de campo con un espacio en blanco. Por ejemplo:

'text2'
Es el texto que se imprime a la izquierda de la fila del resumen.
expression
Es una expresión que determina si la operación de resumen se realiza en cada salto.

Principio de página

x
Referencia: Notas sobre el uso de operadores de prefijo de resumen


Ejemplo: Cómo utilizar operadores de prefijo con SUBTOTAL

El siguiente ejemplo utiliza operadores de prefijo para calcular:

Fíjese en que la fila de subtotal de cada valoración contiene un valor solamente en la columna LISTPR y la fila de subtotal para cada categoría contiene un valor sólo en la columna COPIES. La línea del total general contiene valores para las columnas que han sido subtotalizadas. Fíjese en el espacio en blanco entre cada operador de prefijo y el nombre de campo que lo sigue:

TABLE FILE MOVIES
PRINT COPIES LISTPR WHOLESALEPR TITLE/A23
  BY RATING
  BY CATEGORY
  WHERE CATEGORY EQ 'CHILDREN' OR 'CLASSIC'
  WHERE RATING   EQ 'G' OR 'NR'
  ON RATING    SUBTOTAL AVE. LISTPR AS '*Ave:  '
  ON CATEGORY  SUBTOTAL SUM. COPIES AS '*Sum:  '
END

La salida es:

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR  TITLE                  
------  --------  ------  ------  -----------  -----                  
G       CHILDREN       2   44.95        29.99  SHAGGY DOG, THE        
                       2   29.95        12.50  ALICE IN WONDERLAND    
                       3   26.99        12.00  BAMBI                  
                                                                      
*Sum:   CHILDREN       7                                              
                                                                      
        CLASSIC        3   89.95        40.99  GONE WITH THE WIND     
                                                                      
*Sum:   CLASSIC        3                                              
*Ave:   G                  47.96                                      
                                                                      
NR      CHILDREN       1   19.95        10.00  SMURFS, THE            
                       1   19.95         9.75  SCOOBY-DOO-A DOG IN THE
                       1   14.95         7.65  SESAME STREET-BEDTIME S
                       1   14.98         7.99  ROMPER ROOM-ASK MISS MO
                       1   29.95        15.99  SLEEPING BEAUTY        
                                                                      
*Sum:   CHILDREN       5                                              
                                                                      
        CLASSIC        1   24.98        14.99  EAST OF EDEN           
                       3   39.99        20.00  CITIZEN KANE           
                       1   29.95        15.99  CYRANO DE BERGERAC     
                       1   19.99        10.95  MARTY                  
                       2   19.99        10.95  MALTESE FALCON, THE    
                       2   19.95         9.99  ON THE WATERFRONT      
                       2   89.99        40.99  MUTINY ON THE BOUNTY   
                       2   19.99        10.95  PHILADELPHIA STORY, THE
                       2   19.98        10.99  CAT ON A HOT TIN ROOF  
                       2   29.95        15.00  CASABLANCA             
                                                                      
*Sum:   CLASSIC       18                                              
*Ave:   NR                 27.64                                      
                                                                      
                                                                      
TOTAL                 33   31.91


Ejemplo: Cómo utilizar SUBTOTAL en los niveles de salto de clasificación y total general

En el ejemplo siguiente, se añade el comando ON TABLE SUBTOTAL a la solicitud que aparece en Cómo utilizar operadores de prefijo con SUBTOTAL, al nivel de salto de clasificación, para calcular el número mínimo de copias y el máximo precio de lista, en la línea de total general de todo el informe:

TABLE FILE MOVIES                              
PRINT COPIES LISTPR WHOLESALEPR TITLE/A23      
  BY RATING                                    
  BY CATEGORY                                  
  WHERE CATEGORY EQ 'CHILDREN' OR 'CLASSIC'    
  WHERE RATING   EQ 'G' OR 'NR'                
  ON RATING    SUBTOTAL AVE. LISTPR AS '*Ave:  '
  ON CATEGORY  SUBTOTAL SUM. COPIES AS '*Sum:  '
  ON TABLE SUBTOTAL MIN. COPIES MAX. LISTPR
END

La salida es exactamente la misma que en la solicitud anterior, excepto por la línea del gran total:

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR  TITLE                  
------  --------  ------  ------  -----------  -----                  
G       CHILDREN       2   44.95        29.99  SHAGGY DOG, THE        
                       2   29.95        12.50  ALICE IN WONDERLAND    
                       3   26.99        12.00  BAMBI                  
                                                                      
*Sum:   CHILDREN       7                                              
                                                                      
        CLASSIC        3   89.95        40.99  GONE WITH THE WIND     
                                                                      
*Sum:   CLASSIC        3                                              
*Ave:   G                  47.96                                      
                                                                      
NR      CHILDREN       1   19.95        10.00  SMURFS, THE            
                       1   19.95         9.75  SCOOBY-DOO-A DOG IN THE 
                       1   14.95         7.65  SESAME STREET-BEDTIME S
                       1   14.98         7.99  ROMPER ROOM-ASK MISS MO
                       1   29.95        15.99  SLEEPING BEAUTY        
                                                                      
*Sum:   CHILDREN       5                                              
                                                                      
        CLASSIC        1   24.98        14.99  EAST OF EDEN           
                       3   39.99        20.00  CITIZEN KANE           
                       1   29.95        15.99  CYRANO DE BERGERAC     
                       1   19.99        10.95  MARTY                  
                       2   19.99        10.95  MALTESE FALCON, THE    
                       2   19.95         9.99  ON THE WATERFRONT      
                       2   89.99        40.99  MUTINY ON THE BOUNTY   
                       2   19.99        10.95  PHILADELPHIA STORY, THE
                       2   19.98        10.99  CAT ON A HOT TIN ROOF  
                       2   29.95        15.00  CASABLANCA             
                                                                      
*Sum:   CLASSIC       18                                              
*Ave:   NR                 27.64                                      
                                                                      
                                                                      
TOTAL                  1   89.99


Ejemplo: Cómo mostrar un campo alfanumérico en una línea de resumen

La siguiente solicitud muestra la suma del campo de precio de lista y el valor mínimo del campo director por valoración:

TABLE FILE MOVIES
PRINT COPIES LISTPR WHOLESALEPR DIRECTOR
BY RATING
BY CATEGORY
WHERE CATEGORY EQ 'CHILDREN' OR 'CLASSIC'
WHERE RATING   EQ 'G' OR 'NR'
WHERE DIRECTOR NE ' '
ON RATING SUBTOTAL SUM. LISTPR MIN. DIRECTOR AS '*A/N:'
END

La salida es:

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR  DIRECTOR 
------  --------  ------  ------  -----------  -------- 
G       CHILDREN       2   44.95        29.99  BARTON C.
                       2   29.95        12.50  GEROMINI 
                       3   26.99        12.00  DISNEY W.
        CLASSIC        3   89.95        40.99  FLEMING V
                                                        
*A/N: G                   191.84               BARTON C.
                                                        
NR      CHILDREN       1   29.95        15.99  DISNEY W.
        CLASSIC        1   24.98        14.99  KAZAN E. 
                       3   39.99        20.00  WELLES O.
                       1   29.95        15.99  GORDON M.
                       1   19.99        10.95  MANN D.  
                       2   19.99        10.95  HUSTON J.
                       2   19.95         9.99  KAZAN E. 
                       2   89.99        40.99  MILESTONE L.
                       2   19.99        10.95  CUKOR G.    
                       2   19.98        10.99  BROOKS R.   
                       2   29.95        15.00  CURTIZ M.   
                                                           
*A/N: NR                  344.71               BROOKS R.   
                                                           
                                                           
TOTAL                     536.55               BARTON C.


Ejemplo: Cómo mostrar todos los campos en una línea de resumen

La siguiente solicitud muestra la suma del campo de visualización en la línea de subtotal. El campo director es alfanumérico, por lo que se muestra el último valor:

TABLE FILE MOVIES
PRINT COPIES LISTPR WHOLESALEPR DIRECTOR
BY RATING
BY CATEGORY
WHERE CATEGORY EQ 'CHILDREN' OR 'CLASSIC'
WHERE RATING   EQ 'G' OR 'NR'
WHERE DIRECTOR NE ' '
ON RATING SUBTOTAL SUM. * AS '*All:  '
END

La salida es:

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR  DIRECTOR 
------  --------  ------  ------  -----------  -------- 
G       CHILDREN       2   44.95        29.99  BARTON C.
                       2   29.95        12.50  GEROMINI 
                       3   26.99        12.00  DISNEY W.
        CLASSIC        3   89.95        40.99  FLEMING V
                                                        
*All:   G             10  191.84        95.48  FLEMING V
                                                        
NR      CHILDREN       1   29.95        15.99  DISNEY W.
        CLASSIC        1   24.98        14.99  KAZAN E. 
                       3   39.99        20.00  WELLES O.
                       1   29.95        15.99  GORDON M.
                       1   19.99        10.95  MANN D.  
                       2   19.99        10.95  HUSTON J.
                       2   19.95         9.99  KAZAN E. 
                       2   89.99        40.99  MILESTONE L.
                       2   19.99        10.95  CUKOR G.    
                       2   19.98        10.99  BROOKS R.   
                       2   29.95        15.00  CURTIZ M.   
                                                           
*All:   NR            19  344.71       176.79  CURTIZ M.   
                                                           
                                                           
TOTAL                 29  536.55       272.27  CURTIZ M.

Principio de página

x
Cómo controlar el procesamiento de líneas de resumen

Cómo:

Referencia:

Cuando vaya a procesar líneas de suma, puede controlar si desea utilizar el procesamiento con operadores de prefijos y si desea que los comandos SUBTOTAL y RECOMPUTE se distribuyan a la fila de gran total de un informe.

El procesamiento de líneas de resumen con operadores de prefijo difiere del procesamiento sin operadores de prefijo en los tipos de operaciones que se admiten y en los campos afectados.

De forma predeterminada, no puede mezclar ambos estilos de procesamiento en una solicitud y la sintaxis usada en la solicitud (con operadores de prefijo o sin estos en las líneas del resumen) determinará el tipo de procesamiento que se usará.

Una de las funciones del ajuste SUMMARYLINES es la capacidad de combinar campos con y sin operadores de prefijos en las líneas de suma en una solicitud. En ese caso, se utiliza el procesamiento con operadores de prefijo en todas las líneas del resumen. Los campos que no tengan operadores de prefijo se procesarán como si llevaran el operador SUM. Se necesita el nuevo procesamiento para mostrar campos alfanuméricos en líneas de resumen.

El procesamiento de informes que utilicen operadores de prefijo en líneas de resumen difiere del procesamiento sin operadores de prefijo. En algunos casos, cada tipo de solicitud devuelve un estilo diferente de salida de informe.

Si un comando de resumen especifica un nombre de campo y otro comando de resumen especifica un segundo nombre de campo:

Si se utiliza un operador de prefijo en cualquier comando de resumen, se requiere el procesamiento de operador de prefijo para la solicitud. En la mayoría de las solicitudes, suele estar claro qué tipo de procesamiento debe utilizarse, aunque se especifiquen operadores de prefijo en algunos comandos de resumen, pero no en otros.

Sin embargo, si la primera vez que se encuentra un operador de prefijo que tiene lugar despúes de haberse especificado en un comando de resumen, sin un operador de prefijo que lo acompañe, no se podrá implementar ningún tipo de procesamiento. En este caso, el procesamiento se para y se genera el siguiente mensaje de error (por defecto):

(FOC36376) CANNOT COMBINE SUBTOTAL/RECOMPUTE STYLES WHEN SUMMARYLINES=OLD

Por ejemplo:

ON RATING SUBTOTAL COPIES AVE. LISTPR

o

ON RATING SUBTOTAL LISTPR 
ON CATEGORY SUBTOTAL AVE. COPIES

Puede eliminar este problema emitiendo el comando SET SUMMARYLINES=NEW para especificar que se utilizará procesamiento de operador de prefijo. El operador de prefijo SUM. se aplica entonces a cualquier campo que no tenga un operador de prefijo.

Se necesita el nuevo procesamiento para mostrar campos alfanuméricos en líneas de resumen.

La segunda función del comando SET SUMMARYLINES es que el procesamiento de SUBTOTAL, SUB-TOTAL, SUMMARIZE y RECOMPUTE, en la línea de gran total, sea consistente con la manera en que éstos funcionan para saltos de campos de clasificación. El comando que invoca este tipo de procesamiento es SET SUMMARYLINES=EXPLICIT.

Cuando se usan SUBTOTAL y RECOMPUTE a nivel de salto de clasificación, no se propagan a otras saltos de clasificación. SUB-TOTAL y SUMMARIZE se propagan a todas los saltos de clasificación de nivel superior.

El gran total puede considerarse como el campo de clasificación de más alto nivel en una solicitud. Sin embargo, todas las demás opciones de resumen, no sólo SUB-TOTAL y SUMMARIZE, se propagan por defecto al nivel del total general.

El comando SET SUMMARYLINES=EXPLICIT evita la distribución de SUBTOTAL y RECOMPUTE al gran total. Además, si todos los comandos de resumen de la solicitud especifican listas de campos, sólo agregan y muestran los campos especificados en la línea del total general.

Cuando SUBTOTAL y RECOMPUTE son los únicos comandos de resumen usados en la solicitud, se produce una línea de total general sólo si se especifica explícitamente en la solicitud mediante la frase ON TABLE SUBTOTAL/SUB-TOTAL/RECOMPUTE/SUMMARIZE. Si la frase ON TABLE especifica una lista de campos, sólo se suman y se muestran esos campos.

Observe que siempre podrá suprimir la línea del total general usando el comando ON TABLE NOTOTAL en la solicitud.



x
Sintaxis: Cómo Controlar el procesamiento de líneas de resumen
SET SUMMARYLINES = {OLD|NEW|EXPLICIT}

donde:

OLD
No permite el uso de campos de suma con o sin operadores de prefijos, y distribuye todas las sumas a la línea de gran total. Los campos especificados en las líneas de resumen deben tener operadores de prefijo o deben excluirlos. Esta sintaxis determina el tipo de procesamiento que se aplicará. OLD es el valor predeterminado.

Observe que se aplica un operador de prefijo que preceda a una lista de nombres de campo a cada una de las columnas de ese informe (y, por lo tanto, no se considera que se están mezclando). Puede especificar el operador SUM. para los campos con los que desee obtener un subtotal estándar. Esto produce el mismo valor que se hubiese generado sin los operadores de prefijo. No se incluyen campos alfanuméricos en las líneas de resumen.

NEW
Propaga todas las operaciones de resumen hacia la línea del total general. Usa el procesamiento de operadores de prefijo para todos los comandos de resumen (todos los campos de resumen sin operadores de prefijo se procesan como si tuvieran un operador SUM.). Los campos listados en un comando de resumen sólo se alimentan en líneas de resumen creadas por el comando de resumen y en líneas de resumen creadas por la propagación de dicho comando. Admite que aparezcan campos alfanuméricos en las líneas de resumen.

NEW también permite las operaciones de resumen con columnas alfanuméricas. El valor alfanumérico mostrado en una línea SUBTOTAL o SUB-TOTAL se trata del primer o último valor alfanumérico perteneciente al grupo de clasificación, dependiendo del valor del parámetro SUMPREFIX. En las líneas RECOMPUTE o SUMMARIZE, los valores alfanuméricos se calculan nuevamente mediante los valores de resumen de estas líneas.

EXPLICIT
No propaga SUBTOTAL y RECOMPUTE a la línea del total general. Usa el procesamiento de operadores de prefijo para todos los comandos de resumen (todos los campos de resumen sin operadores de prefijo se procesan como si tuvieran un operador SUM.). Los campos listados en un comando de resumen sólo se alimentan en líneas de resumen creadas por el comando de resumen y en líneas de resumen creadas por la propagación de dicho comando. Admite que aparezcan campos alfanuméricos en las líneas de resumen.

Fíjese que: Este comando no está soportado en una solicitud que use la sintaxis ON TABLE SET.



x
Referencia: Notas sobre el uso de SET SUMMARYLINES

Por ejemplo:

TABLE FILE MOVIES 
PRINT COPIES LISTPR WHOLESALEPR
 BY RATING
 BY CATEGORY
 WHERE CATEGORY EQ 'CHILDREN'
 WHERE RATING   EQ 'G'
 ON RATING    SUBTOTAL LISTPR AS '*LIST' 
 ON CATEGORY  SUBTOTAL  COPIES AS '*COPY'
END

La salida cuando SUMMARYLINES=OLD tiene subtotales para COPIES y LISTPR en ambos saltos de clasificación. No se menciona WHOLESALEPR en ningún comando SUBTOTAL y, por lo tanto, no se encuentra en la línea de resumen:

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR
------  --------  ------  ------  -----------
G       CHILDREN       2   44.95        29.99
                       2   29.95        12.50
                       3   26.99        12.00
 
*COPY CHILDREN         7  101.89
*LIST G                7  101.89
 
 
TOTAL                  7  101.89

La salida cuando SUMMARYLINES=NEW tiene subtotales para COPIES en el salto de clasificación CATEGORY y para LISTPR en el salto de clasificación RATING. Ambas columnas se alimentan en la línea de total general. No se menciona WHOLESALEPR en ningún comando SUBTOTAL y, por lo tanto, no se encuentra en la línea de resumen:

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR
------  --------  ------  ------  -----------
G       CHILDREN       2   44.95        29.99
                       2   29.95        12.50
                       3   26.99        12.00
 
*COPY CHILDREN         7
*LIST G                   101.89
 
 
TOTAL                  7  101.89


Ejemplo: Cómo usar SET SUMMARYLINES con SUBTOTAL

La siguiente solicitud usando el origen de datos MOVIES tiene un salto de clasificación para CATEGORY que subtotaliza el campo COPIES y un salto de clasificación para RATING que subtotaliza el campo LISTPR:

SET SUMMARYLINES=OLD
TABLE FILE MOVIES
SUM COPIES LISTPR WHOLESALEPR
BY RATING
BY CATEGORY
WHERE CATEGORY EQ 'CHILDREN'
WHERE RATING   EQ 'G'
ON RATING SUBTOTAL COPIES
ON CATEGORY SUBTOTAL LISTPR
END

La ejecución de la solicitud con SUMMARYLINES=OLD subtotaliza tanto COPIES como LISTPR en cada salto de clasificación y los propaga a la línea del total general:

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR
------  --------  ------  ------  -----------
G       CHILDREN       7  101.89        54.49
                                             
*TOTAL CHILDREN        7  101.89             
*TOTAL G               7  101.89             
                                             
                                             
TOTAL                  7  101.89

La ejecución de la solicitud con SUMMARYLINES=NEW subtotaliza COPIES sólo para el salto de clasificación RATING y subtotaliza LISTPR sólo para el salto de clasificación CATEGORY, pero propaga ambos a la línea del total general:

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR
------  --------  ------  ------  -----------
G       CHILDREN       7  101.89        54.49
                                             
*TOTAL CHILDREN           101.89             
*TOTAL G               7                     
                                             
                                             
TOTAL                  7  101.89

La ejecución de la solicitud con SUMMARYLINES=EXPLICIT subtotaliza COPIES sólo para el salto de clasificación RATING y subtotaliza LISTPR sólo para el salto de clasificación CATEGORY. No produce una línea de total general:

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR
------  --------  ------  ------  -----------
G       CHILDREN       7  101.89        54.49
                                             
*TOTAL CHILDREN           101.89             
*TOTAL G               7

Si se añada la frase ON TABLE SUBTOTAL WHOLESALEPR a SUMMARYLINES=EXPLICIT se produce una línea de total general con el subtotal del campo WHOLESALEPR.

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR
------  --------  ------  ------  -----------
G       CHILDREN       7  101.89        54.49
                                             
*TOTAL CHILDREN           101.89             
*TOTAL G               7                     
                                             
                                             
TOTAL                                   54.49


Ejemplo: Cómo usar COLUMN-TOTAL con SET SUMMARYLINES=EXPLICIT

La siguiente solicitud, en que se usa el origen de datos MOVIE, tiene un salto de clasificación para CATEGORY para el cual se subtotaliza el campo COPIES y un salto de clasificación para RATING que subtotaliza el campo LISTPR. También tiene una frase ON TABLE COLUMN-TOTAL:

SET SUMMARYLINES=EXPLICIT
TABLE FILE MOVIES
SUM COPIES LISTPR WHOLESALEPR
BY RATING
BY CATEGORY
WHERE CATEGORY EQ 'CHILDREN'
WHERE RATING   EQ 'G'
ON RATING SUBTOTAL COPIES
ON CATEGORY SUBTOTAL LISTPR
ON TABLE COLUMN-TOTAL
END

La línea del total general muestra un total de columna para todas las columnas numéricas debido a la frase ON TABLE COLUMN-TOTAL:

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR
------  --------  ------  ------  -----------
G       CHILDREN       7  101.89        54.49
                                             
*TOTAL CHILDREN           101.89             
*TOTAL G               7                     
                                             
                                             
TOTAL                  7  101.89        54.49

La siguiente solicitud tiene un comando ON TABLE COLUMN-WHOLESALEPR: También tiene una frase ON TABLE COLUMN-TOTAL:

SET SUMMARYLINES=EXPLICIT
TABLE FILE MOVIES
SUM COPIES LISTPR WHOLESALEPR
BY RATING
BY CATEGORY
WHERE CATEGORY EQ 'CHILDREN'
WHERE RATING   EQ 'G'
ON RATING SUBTOTAL COPIES
ON CATEGORY SUBTOTAL LISTPR
ON TABLE SUBTOTAL WHOLESALEPR
ON TABLE COLUMN-TOTAL
END

La línea del total general sólo muestra un total de columna para la columna WHOLESALEPR debido al comando ON TABLE SUBTOTAL:

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR
------  --------  ------  ------  -----------
G       CHILDREN       7  101.89        54.49
                                             
*TOTAL CHILDREN           101.89             
*TOTAL G               7                     
                                             
                                             
TOTAL                                   54.49

El uso de SUB-TOTAL en vez de SUBTOTAL provoca que COPIES y LISTPR se agreguen a la línea de total general. Se totaliza WHOLESALEPR porque aparece enumerado en la frase COLUMN-TOTAL. El subtotal de LISTPR se propaga al salto de clasificación RATING así como al total general:

SET SUMMARYLINES=EXPLICIT
TABLE FILE MOVIES
SUM COPIES LISTPR WHOLESALEPR
BY RATING
BY CATEGORY
WHERE CATEGORY EQ 'CHILDREN'
WHERE RATING   EQ 'G'
ON RATING SUB-TOTAL COPIES
ON CATEGORY SUB-TOTAL LISTPR
ON TABLE COLUMN-TOTAL WHOLESALEPR
END

La salida es:

RATING  CATEGORY  COPIES  LISTPR  WHOLESALEPR
------  --------  ------  ------  -----------
G       CHILDREN       7  101.89        54.49
                                             
*TOTAL CHILDREN           101.89             
*TOTAL G               7  101.89             
                                             
                                             
TOTAL                  7  101.89        54.49

Principio de página

x
Cómo utilizar operadores de prefijo con valores calculados

Si una solicitud incluye el comando RECOMPUTE o SUMMARIZE, la expresión especificada en el comando COMPUTE asociado se aplica usando valores de la línea del resumen. La columna usada para recalcular la expresión puede tener operadores de prefijos. La columna recalculada, sea cual sea el operador de prefijo especificado, aplica los valores de entrada a la expresión especificada en la instrucción COMPUTE. Por lo tanto, cualquier operador de prefijo soportado se puede especificar para la columna recalculada del informe sin afectar el valor calculado.

Con el procesamiento de operadores de prefijos, todos los campos usados en el comando COMPUTE se deben mostrar por el comando RECOMPUTE o SUMMARIZE para poder ser completados. Si no se alimenta cualquiera de los campos utilizados en la expresión, el valor calculado obtenido para la expresión resulta impredecible.



Ejemplo: Cómo utilizar operadores de prefijo con RECOMPUTE

La primera solicitud crea un nombre de campo calculado, que es la diferencia entre DOLLARS y BUDDOLLARS. Este valor después se recalcula (RECOMPUTE) para cada región, sin utilizar operadores de prefijo.

TABLE FILE GGSALES
SUM UNITS DOLLARS BUDDOLLARS
AND COMPUTE DIFF/I10 = DOLLARS-BUDDOLLARS;
  BY REGION
  BY CATEGORY
  WHERE CATEGORY EQ 'Food' OR 'Coffee'
  WHERE REGION EQ 'West' OR 'Midwest'
  ON REGION  RECOMPUTE
END

El valor recalculado es la diferencia ente los totales para DOLLARS y BUDDOLLARS.

Region      Category    Unit Sales Dollar Sales Budget Dollars       DIFF
------      --------    ---------- ------------ --------------       ----
Midwest     Coffee          332777      4178513        4086032      92481
            Food            341414      4338271        4220721     117550
                                                                         
*TOTAL Midwest              674191      8516784        8306753     210031
                                                                         
West        Coffee          356763      4473517        4523963     -50446
            Food            340234      4202337        4183244      19093
                                                                         
*TOTAL West                 696997      8675854        8707207     -31353
                                                                         
                                                                         
TOTAL                      1371188     17192638       17013960     178678

La siguiente solicitud utiliza operadores de prefijo en el comando RECOMPUTE para calcular el máximo de DOLLARS y el mínimo de BUDDOLLARS y luego recalcular DIFF. No importa el operador de prefijo que especifique para DIFF, se calcula como la diferencia entre los valores de las columnas DOLLARS y BUDDOLLARS. No se puede realizar el cálculo si alguno de los campos usados en el cálculo (DOLLARS, BUDDOLLARS y DIFF) no aparece en la fila del resumen.

TABLE FILE GGSALES
SUM UNITS DOLLARS BUDDOLLARS
AND COMPUTE DIFF/I10 = DOLLARS-BUDDOLLARS;
  BY REGION
  BY CATEGORY
  WHERE CATEGORY EQ 'Food' OR 'Coffee'
  WHERE REGION EQ 'West' OR 'Midwest' 
  ON REGION RECOMPUTE MAX. DOLLARS MIN. BUDDOLLARS AVE. DIFF
END

La salida es:

Region      Category    Unit Sales Dollar Sales Budget Dollars       DIFF
------      --------    ---------- ------------ --------------       ----
Midwest     Coffee          332777      4178513        4086032      92481
            Food            341414      4338271        4220721     117550
                                                                         
*TOTAL Midwest                          4338271        4086032     252239
                                                                         
West        Coffee          356763      4473517        4523963     -50446
            Food            340234      4202337        4183244      19093
                                                                         
*TOTAL West                             4473517        4183244     290273


Ejemplo: Cómo utilizar RECOMPUTE en los niveles de salto de clasificación y total general

El ejemplo que sigue añade el comando ON TABLE RECOMPUTE a la solicitud que aparece en Cómo utilizar operadores de prefijo con RECOMPUTE para calcular los valores promedio para cada columna. Tenga en cuenta que el valor de DIFF se calcula como la diferencia entre los valores en las columnas Dollar Sales y Budget Dollars en la línea del total general:

TABLE FILE GGSALES
SUM UNITS DOLLARS BUDDOLLARS
AND COMPUTE DIFF/I10 = DOLLARS-BUDDOLLARS;
  BY REGION
  BY CATEGORY
  WHERE CATEGORY EQ 'Food' OR 'Coffee'
  WHERE REGION EQ 'West' OR 'Midwest'
  ON REGION  RECOMPUTE MAX. DOLLARS MIN. BUDDOLLARS DIFF
 ON TABLE RECOMPUTE AVE.
END

La salida es:

Region      Category    Unit Sales Dollar Sales Budget Dollars       DIFF
------      --------    ---------- ------------ --------------       ----
Midwest     Coffee          332777      4178513        4086032      92481
            Food            341414      4338271        4220721     117550
                                                                         
*TOTAL Midwest                          4338271        4086032     252239
                                                                         
West        Coffee          356763      4473527        4523963     -50436
            Food            340234      4202338        4183244      19094
                                                                         
*TOTAL West                             4473527        4183244     290283
                                                                         
                                                                         
TOTAL                       342797      4298162        4253490      44672

Principio de página

x
Cómo utilizar múltiples comandos SUB-TOTAL o SUMMARIZE con operadores de prefijo

SUB-TOTAL y SUMMARIZE distribuyen sus operaciones a todos los campos de clasificación de alto nivel. Si una solicitud usa SUBTOTAL o SUMMARIZE en múltiples niveles de clasificación, se puede aplicar más de un operador de prefijo al mismo campo.

Cuando se distribuye un comando SUB-TOTAL o SUMMARIZE desde un nivel de clasificación de bajo nivel a niveles superiores, ésta aplica sus operadores de prefijo sólo a los campos que no tenían diferentes operadores de prefijo previamente especificados en el nivel más alto. Para cualquier campo que tenga un operador de prefijo especificado en un nivel superior, se aplica el operador de prefijo original tanto al nivel en que se especificó inicialmente como a la línea de total general, a menos que se especifique un operador diferente para la línea de total general.



Ejemplo: Cómo utilizar múltiples comandos SUB-TOTAL con operadores de prefijo

El ejemplo que sigue muestra el trabajo de los operadores de prefijo en una solicitud con múltiples comandos SUB-TOTAL, cada uno con un operador de prefijo diferente.

DEFINE FILE GGSALES
YEAR/YY = DATE;
END
 
TABLE FILE GGSALES
SUM   UNITS DOLLARS/D10.2 BUDDOLLARS
  BY YEAR
  BY ST
  BY REGION
  BY CATEGORY
WHERE REGION EQ 'West' OR 'Midwest'
WHERE ST     EQ 'CA' OR 'IL'
WHERE YEAR EQ '1996' OR '1997'
  ON YEAR SUB-TOTAL CNT. UNITS AS '*CNT. UNITS:'
  ON ST SUB-TOTAL AVE. DOLLARS AS '*AVE. $:' 
  ON REGION SUB-TOTAL MIN. AS '*MIN.:'
END

En la siguiente salida de informe, algunos valores se han puesto en cursiva o negrita, para mayor claridad:


WebFOCUS