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.
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 AccessFigura A |
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 relacionalesFigura B |
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 ejemplosSigue 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