Este apartado describe la utilización de la función SELECT y otras funciones de de columnas, para manipular campos de repetición en un árbol de mensajes.
Suponga que desea realizar una acción especial en facturas que tengan un valor total de pedido superior a un importe determinado. Para calcular el valore total del pedido de un campo Factura, debe multiplicar los campos de Precio por los campos de Cantidad en todos los Items del mensaje y totalizar el resultado. Esto puede hacerse utilizando una expresión SELECT como se indica a continuación.
( SELECT SUM( CAST(I.Price AS DECIMAL) * CAST(I.Quantity AS INTEGER) ) FROM Body.Invoice.Purchases."Item"[] AS I )
El ejemplo supone que necesita utilizar expresiones CAST para convertir los valores de serie de caracteres de los campos Precio y Cantidad en los tipos de datos correspondientes. La conversión del campo Precio en un decimal crea un valor decimal con la escala y la precisión naturales, es decir, con la escala y la precisión necesarias para representar el número. Estos CAST no estarán necesariamente en los dos cuando ya tengan un tipo de datos apropiado.
La expresión SELECT funciona de forma similar para el predicado cuantificado y de forma muy parecida a cómo funciona SELECT en el SQL estándar de base de datos. La cláusula FROM especifica lo que se está repitiendo, en este caso todos los campos Item de Factura, y establece que se puede hacer referencia a la instancia actual de Item utilizando I. Esta forma de SELECT implica una función de columna, en este caso la función SUM (suma), por lo que SELECT se evalúa añadiendo los resultados de la evaluación de la expresión en la función SUM para cada campo Item de la Factura. Como con el SQL estándar, las funciones de columna ignoran los valores NULL, con la excepción de la función de columna COUNT que se explica más adelante, y la función de columna devuelve únicamente un valor NULL cuando no hay ningún valor que no sea nulo (NULL) para combinarlo.
Las otras funciones de columna que se facilitan son MAX, MIN y COUNT. La función COUNT tiene dos formas de funcionar distintas respecto a los NULL. La primera forma se utiliza bastante igual que la función SUM de arriba, por ejemplo:
SELECT COUNT(I.Quantity) FROM Body.Invoice.Purchases."Item"[] AS I
Esta expresión devuelve el número de campos Item para los cuales el campo Quantity no es un NULL. Es decir, que la función COUNT cuenta valores que no sean nulos (NULL), de la misma forma que la función SUM añade valores que no sean NULL. La forma alternativa de utilizar la función COUNT es la siguiente:
SELECT COUNT(*) FROM Body.Invoice.Purchases."Item"[] AS I
Utilizando COUNT(*) se cuenta el número total de campos Item, independientemente de si alguno de los campos es nulo (NULL). De hecho, el ejemplo anterior es equivalente a emplear la función CARDINALITY, como se indica a continuación:
CARDINALITY(Body.Invoice.Purchases."Item"[]
En todos los ejemplos de SELECT facilitados aquí, igual que en el SQL estándar, puede utilizar una cláusula WHERE para proporcionar el filtrado a los campos.
Conceptos relacionados
Flujos de mensajes
ESQL
Diseño de mensajes
Tareas relacionadas
Diseño de un flujo de mensajes
Definición del contenido del flujo de mensajes
Gestión de archivos ESQL
Referencia relacionada
Nodo Compute
Nodo Database
Nodo Filter
ESQL
Función CARDINALITY
Función SELECT
Mensaje de ejemplo
Avisos |
Marcas registradas |
Descargas |
Biblioteca |
Soporte |
Información de retorno (feedback)
![]() ![]() |
ak20705_ |