Cláusula HAVING (SQL Server Compact)

Especifica una condición de búsqueda para un grupo o agregado. HAVING se suele utilizar con la cláusula GROUP BY.

Sintaxis

[ HAVING < search_condition > ] 

Argumentos

  • < search_condition >
    Especifica la condición de búsqueda que el grupo debe cumplir. Esta condición puede utilizar expresiones agregadas y no agregadas. Las únicas columnas que se pueden utilizar en las expresiones no agregadas son las especificadas como columnas de agrupación en la cláusula GROUP BY. Esto se debe a que las columnas group-by representan propiedades comunes de todo el grupo. De forma parecida, las expresiones agregadas representan una propiedad común para todo el grupo. La condición de búsqueda de la cláusula HAVING expresa un predicado por encima de las propiedades del grupo.

    Los tipos de datos image y ntext no se pueden utilizar en una cláusula HAVING.

Comentarios

Las consultas siguientes se permiten en SQL Server, pero no en SQL Server Compact, y ocasionan que aparezca un mensaje de error similar al siguiente: "En las expresiones de agregado y agrupamiento, la cláusula HAVING sólo puede contener funciones de agregado y expresiones de agrupamiento".

select count(*), c1+c2 from s1 group by c1+c2 having c1+c2 <10; 
select count(*), x from (select *, col1 + col2 as x from oj1) d group by x having x <4;

Sin embargo, estas consultas se permiten en SQL Server Compact si se usa una variable de una única columna en lugar de una expresión, como (c1+c2).

Ejemplo

El ejemplo de código siguiente devuelve una lista de todos los productos con un recuento total superior a 50.

SELECT [Product ID], COUNT(*) AS Total FROM [Order Details] GROUP BY [Product ID] HAVING (COUNT(*) > 50)