Cómo generar un total acumulado en una consulta SQL

Los totales acumulados y los subtotales son características comunes en los informes. Puedes mostrar un total acumulado en un informe simplemente configurando una propiedad. Un total acumulado es la suma acumulativa que evalúa las filas anteriores y la fila actual. En otras palabras, el total acumulado de cada fila es igual a sí misma más el total anterior. Desafortunadamente, no todos los objetos manejan un total acumulado tan fácilmente como un informe.

Índice de Contenido
  1. La expresión
  2. Ejemplo de consulta
  3. Consideraciones importantes
  4. Sigue sumando

La expresión

No hay una propiedad o función incorporada para generar un total acumulado en una consulta. Para ello, necesitarás una expresión bastante compleja en el siguiente formato:

SELECT lista_de_campos,
 (SELECT Sum(campo_valor) AS Total
 FROM fuente_de_datos
 WHERE fuente_de_datos.campo_orden <= T1.campo_orden) AS Total
FROM fuente_de_datos AS T1

Tabla A explica los argumentos de la declaración.

Tabla A

Argumento

Cómo instalar y configurar Sybase Adaptive Server Enterprise (ASE) en Linux

Explicación

lista_de_campos

Los campos que quieres que la consulta devuelva

campo_valor

El campo que estás sumando

fuente_de_datos

Qué es sudo y por qué deberías usarlo

La tabla (o consulta) que contiene los valores que estás sumando

campo_orden

Un campo de valores únicos y ascendentes

Aunque esta expresión funciona bien, hay una limitación. La tabla debe tener una columna con valores únicos en orden ascendente. Eso es el campo de orden en la declaración de sintaxis anterior. Un campo Autonumérico cumple con este requisito, pero también funcionará un campo numérico con valores únicos en orden ascendente. Ordenar por los valores reales que deseas sumar solo funciona si esos valores son únicos y están en orden ascendente. Debes evitar usar los valores reales por esta razón. Incluso si empiezan así, es poco probable que se mantengan de esa manera.

Ejemplo de consulta

Construyamos una consulta que genere totales acumulados para los valores en la tabla mostrada en Figura A. (OrderID es un campo Autonumérico y OriginalValue es un campo Numérico.) Puedes usar cualquier tabla, pero debe tener los dos campos numéricos que ya hemos discutido: un campo de valores a sumar y un campo de valores únicos en orden ascendente.

Cómo eliminar registros duplicados en una base de datos de Access

Figura A

Cómo generar un total acumulado en una consulta SQL - Gestión de datos | Imagen 1 Newsmatic
 

Con la consulta de selección en Vista de diseño, selecciona Vista SQL desde el botón Vista para abrir la ventana SQL. Esta ventana muestra la declaración SQL de una consulta. (No puedes ingresar esta declaración SQL a través de la cuadrícula QBE). En la ventana SQL, ingresa la siguiente declaración SQL:

SELECT OrderID, OriginalValue,
 (SELECT Sum(tblOriginalValues.OriginalValue) AS Total
 FROM tblOriginalValues
 WHERE tblOriginalValues.OrderID <= T1.OrderID) AS Total
FROM tblOriginalValues AS T1

Cuando ejecutes la consulta, el campo Total devolverá la suma acumulativa de los valores en el campo OriginalValue, como se muestra en Figura B.

Ventajas de las claves sustitutas en bases de datos relacionales

Figura B

Cómo generar un total acumulado en una consulta SQL - Gestión de datos | Imagen 2 Newsmatic
 

Debido a que el valor OrderID (el campo Autonumérico) está en orden ascendente, la condición de la cláusula WHERE siempre es verdadera, lo que fuerza una nueva suma para cada registro. Esta declaración SQL funciona de manera similar a una función de dominio agregado, pero es mucho más rápida.

Consideraciones importantes

Puede que hayas notado que los valores Autonuméricos en el campo de orden (OrderID) del ejemplo omiten valores. Los espacios entre valores no afectarán los resultados. En realidad, no es necesario que el campo de orden esté en orden ascendente. Lo único absoluto es que el campo contenga valores únicos. Si el campo de orden no está en orden ascendente, agrega una cláusula ORDER BY en la forma:

ORDER BY T1.campo_de_orden

Hacer esto probablemente cambie los totales acumulados, así que si el orden es importante, confía en un campo Autonumérico.

Por último, esta solución se ralentizará al evaluar grandes cantidades de datos. La buena noticia es que aún debe funcionar más rápido que usar un dominio agregado en una expresión de consulta o en un control de informe o formulario.

Tipos de JOIN en SQL: explicación básica y ejemplos

Sigue sumando

La generación de un total acumulado no es intuitiva en una consulta, pero puedes hacerlo usando una subconsulta. Necesitarás un campo numérico adicional con valores únicos ascendentes, lo cual puedes lograr simplemente agregando un campo Autonumérico a la tabla, si es necesario. Una vez que hayas generado el total acumulado en la consulta, puedes ver la lista en cualquier formato que desees.

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Gestión de datos, allí encontraras muchos artículos similares a Cómo generar un total acumulado en una consulta SQL , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.