Evaluar y enviar comentarios

  Activar vista de ancho de banda bajo
Contenido de la comunidad
En esta sección
Estadísticas Anotaciones (0)
Contraer todo/Expandir todo Contraer todo
Libros en pantalla de SQL Server 2008 (julio de 2009)
Equivalentes de GROUPING SETS

Una cláusula GROUP BY que utiliza GROUPING SETS puede generar un conjunto de resultados equivalente al generado por una cláusula UNION ALL o varias cláusulas GROUP BY simples. GROUPING SETS puede generar un resultado equivalente al generado por una simple operación GROUP BY, ROLLUP o CUBE. Diferentes combinaciones de GROUPING SETS, ROLLUP o CUBE pueden generar conjuntos de resultados equivalentes.

En este tema se proporcionan ejemplos de equivalencias a GROUPING SETS. En los ejemplos se utilizan las siguientes abreviaturas:

  • Agg(): cualquier función de agregado
  • (arg): un argumento

Especificar GROUPING SETS (<conjunto de agrupamiento> [,...n ]) como lista GROUP BY es equivalente a una UNION ALL de las consultas, cada una con uno de los conjuntos de agrupamiento establecido como su lista GROUP BY. El uso de agregados con números en punto flotante podría dar lugar a resultados ligeramente diferentes.

Las siguientes instrucciones son equivalentes:

SELECT customer, year, SUM(sales)
FROM T
GROUP BY GROUPING SETS ((customer), (year))
SELECT customer, NULL as year, SUM(sales)
FROM T 
GROUP BY customer
UNION ALL
SELECT NULL as customer, year, SUM(sales)
FROM T 
GROUP BY year

Las cláusulas siguientes devuelven los mismos totales generales:

GROUP BY GROUPING SETS ( () )
GROUP BY ()

Las cláusulas siguientes devuelven los mismos conjuntos únicos:

GROUP BY GROUPING SETS ( (C1, C2, ..., Cn) )
GROUP BY C1, C2, ..., Cn

GROUP BY ROLLUP (<lista de elementos compuesta>) con n dimensiones en la lista de entrada es equivalente a GROUPING SETS, con todos los prefijos (n+1) de su lista de entrada como sus GROUPING SETS.

Las siguientes cláusulas son equivalentes:

GROUP BY ROLLUP (C1, C2, …, Cn-1, Cn)
GROUP BY GROUPING SETS ( (C1, C2, …, Cn-1, Cn)
    ,(C1, C2, ..., Cn-1)
    ...
    ,(C1, C2)
    ,(C1)
    ,() )

GROUP BY CUBE (<lista de elementos compuesta>) con n dimensiones en la lista de entrada es equivalente a GROUPING SETS, con el conjunto completo (2n combinaciones de las dimensiones en la lista de entrada) de su lista de entrada como sus GROUPING SETS.

Las siguientes cláusulas son equivalentes:

GROUP BY CUBE (C1, C2, C3, ..., Cn-2, Cn-1, Cn)

GROUP BY GROUPING SETS (
     (C1, C2, C3, ..., Cn-2, Cn-1, Cn) -- All dimensions are included.
    ,( , C2, C3, ..., Cn-2, Cn-1, Cn) -- n-1 dimensions are included.
    ,(C1, C3, ..., Cn-2, Cn-1, Cn)
    …
    ,(C1, C2, C3, ..., Cn-2, Cn-1,)
    ,(C3, ..., Cn-2, Cn-1, Cn) -- n-2 dimensions included
    ,(C1  ..., Cn-2, Cn-1, Cn)
    …
    ,(C1, C2) -- 2 dimensions are included.
    ,…
    ,(C1, Cn)
    ,…
    ,(Cn-1, Cn)
    ,…
    ,(C1) -- 1 dimension included
    ,(C2)
    ,…
    ,(Cn-1)
    ,(Cn)
    ,() ) -- Grand total, 0 dimension is included.

Las siguientes cláusulas son equivalentes:

GROUP BY CUBE (C1, C2, C3)
GROUP BY GROUPING SETS ( (C1, C2, C3)
    ,(C1, C2)
    ,(C1, C3)
    ,(C2, C3)
    ,(C1)
    ,(C2)
    ,(C3)
    ,() )

Las siguientes cláusulas son equivalentes:

ROLLUP(A, (C1, C2, ..., Cn) )
ROLLUP( (A), (C1, C2, ..., Cn) )
GROUPING SETS ( (A, C1, C2, ..., Cn), (A), () )

Las siguientes cláusulas son equivalentes:

CUBE(A, (C1, C2, ..., Cn) )
CUBE( (A), (C1, C2, ..., Cn) )
GROUPING SETS ( (), (A), (C1, C2, ..., Cn), (A, C1, C2, ..., Cn) )

Las siguientes cláusulas son equivalentes:

GROUP BY A, CUBE (B, C)
GROUP BY GROUPING SETS ( (A), (A, B), (A, C), (A, B, C ))

Las siguientes cláusulas son equivalentes:

GROUP BY A, GROUPING SETS ( (B), (C) )
GROUP BY GROUPING SETS ( (A, B), (A, C) )

Las siguientes cláusulas son equivalentes:

GROUP BY ROLLUP (A, B), ROLLUP(C, D)
GROUP BY GROUPING SETS
    ( (),(C),(C,D),(A),(A,C),(A,C,D),(A,B),(A,B,C),(A,B,C,D) )

Las siguientes cláusulas son equivalentes:

GROUP BY GROUPING SETS ( (A), ROLLUP (B, C) )
GROUP BY GROUPING SETS ( (A), (B,C), (B), () )

Las siguientes cláusulas son equivalentes:

GROUP BY GROUPING SETS(A, (B, ROLLUP(C, D)) )
GROUP BY GROUPING SETS (A, B, (B,C), (B, C, D) () )
Contenido de la comunidad   ¿Qué es Community Content?
Agregar contenido nuevo RSS  Anotaciones
Processing
© 2009 Microsoft Corporation. Reservados todos los derechos. Condiciones de Uso | Marcas registradas | Declaración de privacidad
Page view tracker