Published on

July 31, 2012

Generando Totales y Subtotales en SQL Server

El desarrollo de informes a menudo implica la necesidad de mostrar subtotales y totales en diferentes niveles jerárquicos. Esta puede ser una tarea desafiante, especialmente cuando se trata de informes financieros que contienen numerosos números, fórmulas y cálculos. Sin embargo, SQL Server proporciona una función poderosa llamada GROUPING con ROLL UP que puede generar eficientemente estos totales y subtotales.

Para demostrar cómo utilizar la función GROUPING con ROLL UP, consideremos un escenario en el que tenemos una tabla llamada “GroupTest” con columnas como Product_Name, Scheme_Name, Invest_Amount, Broker_Commission y Issue_Date. Poblaremos esta tabla con datos de muestra utilizando un bucle WHILE y operaciones matemáticas.

DECLARE @GroupTest TABLE
(
 Product_Name varchar(100),
 Scheme_Name varchar(100),
 Invest_Amount numeric(18,2),
 Broker_Commission numeric(18,2),
 Issue_Date datetime
)

-- Poblar la tabla @GroupTest con datos de muestra utilizando un bucle WHILE

SELECT Product_Name, Scheme_Name, Invest_Amount, Broker_Commission, Issue_Date 
FROM @GroupTest

Ahora, discutamos el resultado deseado. Queremos un conjunto de resultados que incluya:

  • Registros de inversión individuales
  • Subtotales para el monto total invertido y el monto total de comisión del corredor bajo cada esquema
  • Subtotales para el monto total invertido y el monto total de comisión del corredor bajo cada producto
  • Una fila de total general para el monto total invertido y el monto total de comisión del corredor en todos los productos

Una forma de lograr esto es utilizando el Método 1, que implica combinar cuatro consultas diferentes utilizando la cláusula UNION ALL. La primera consulta recupera los registros de inversión individuales, la segunda consulta calcula los subtotales para cada esquema, la tercera consulta calcula los subtotales para cada producto y la cuarta consulta calcula el total general.

Otro enfoque es utilizar el Método 2, que utiliza la función GROUPING con ROLL UP. Este método simplifica el código y reduce el número de consultas. La función GROUPING se utiliza como una columna adicional en la consulta y distingue la fila de total general del resto asignando un valor de ‘1’.

Ambos métodos tienen sus ventajas y desventajas. El Método 1 es útil cuando se trata de un mayor número de campos no agregados en la lista SELECT, mientras que el Método 2 es más adecuado para consultas más pequeñas con menos columnas no agregadas.

En conclusión, SQL Server proporciona características poderosas como la función GROUPING con ROLL UP para generar totales y subtotales de manera eficiente. Dependiendo de la complejidad de su consulta y el número de campos no agregados, puede elegir el método apropiado para lograr el resultado deseado.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.