HAVING

La adición HAVING se utiliza para limitar el número de filas de GROUP BY en el conjunto de resultados, es decir filtrar la información directamente en la agrupación. Esta lección trata de enseñarle cómo implementar correctamente esta adición en las sentencias de lecturas.

  • Sintaxis

… HAVING sql_cond … .

  • Efecto

La adición HAVING limita el número de filas de GROUP BY en el conjunto de resultados utilizando la expresión lógica sql_cond en estas filas. La sintaxis de la expresión lógica sql_cond coincide con la sintaxis de la expresión lógica sql_cond de la condición WHERE. Las comparaciones de la expresión lógica evalúan el contenido de las filas agrupadas.

  • Aplicación práctica

En un programa ejecutable realizamos una selección de datos en la tabla ZSPFLISA0001 obteniendo en una tabla interna el contador de las compañías aéreas. Aparte del contador, la tabla interna tendrá las columnas CARRID y CITYFROM. Para el tipo de la tabla interna declaramos un tipo local. Para aplicar HAVING filtramos en la agrupación para obtener sólo los registros que tienen la ciudad de salida Frankfurt.

  1. Implementamos el código fuente.
  2. Ejecutamos el programa.Como se puede observar los filtros se aplicaron en la agrupación con la adición HAVING.
  • Notas
  • Si las filas se agrupan mediante la adición GROUP BY, todas las columnas que se especifican directamente en la condición sql_cond con su nombre col se enumeran después de GROUP BY. Especificar una columna diferente aumenta directamente la excepción manejable CX_SY_OPEN_SQL_DB. Para cualquier columna de las tablas de base de datos o vistas listadas después de FROM, cualquier expresión agregada se puede especificar en las tablas de base de datos listadas en las comparaciones de sql_cond. Este tipo de expresión agregada se evalúa para cada grupo de filas definido en GROUP BY y su resultado se utiliza como un operando en la comparación. Si, al mismo tiempo, una columna de este tipo también aparece como un argumento de una función agregada después de SELECT, las expresiones agregadas después de SELECT y después de HAVING pueden ser diferentes.
  • Si la adición GROUP BY no se especifica o el objeto de datos column_syntax en la especificación de columna dinámica después de GROUP BY es inicial, la adición HAVING sólo se puede especificar si todo el conjunto de resultados se agrupa en una línea (es decir, si sólo hay agregado expresiones especificadas después de SELECT). En este caso, sólo se pueden especificar las expresiones de agregado como operandos en sql_cond. Estos operandos se evalúan para todas las filas del conjunto de resultados.

 
 

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Suscríbete al blog
Recibe las últimas actualizaciones y contenidos exclusivos directamente en tú correo electrónico.
Inscribime
close-link