Visual Basic.NET - CONSULTA SQL - SALDO ACUMULADO

 
Vista:
sin imagen de perfil

CONSULTA SQL - SALDO ACUMULADO

Publicado por marco gutierrez (21 intervenciones) el 21/03/2024 03:36:51
buenas noches, por favor necesito de su ayuda quiero generar una consulta SQL donde se acumule el saldo acumulado del campo galones, teniendo en cuenta que debe estar agrupado y ordenado asi surtidor(lado) y cod (producto) son los criterios

surtidos(lado) / cod(producto) / transacciones (correlativo)

consulta SQL:

1
2
3
4
select T1.transaccion, T1.surtidor, T1.cod,T1.Galones,sum(T1.Galones) as acumulado,T1.Contometros
from BD4_Transacciones_XPump T1
join BD4_Transacciones_XPump T2 on ((T1.surtidor=T2.Surtidor and T1.cod=T2.cod ) and T1.Transaccion >= T2.Transaccion)
group by T1.surtidor,T1.cod , T1.Transaccion,T1.Galones,T1.Contometros

les comento que tengo una consulta similar pero solo los campos producto / fecha y me genera el saldo acumulado correctamente no se por que en la consulta que les detallo no me calcula el acumulado correctamente llevo 3 dias probando de muchas maneras pero no logro solucionarlo.

en la imagen en la columna acumulado la segunda fila deberia ser 2.340 no se por que sale 2.006 inclusive el contometro es correcto.

su ayuda por favor.

NOTA: se que se puede hacer de otra manera la consulta sql pero necesito hacerlo de esa manera ya que manejamos diferencia versiones de sql en las estaciones y en algunos no soporta esa clausuras o funciones.

les dejo la tabla con datos

https://www.dropbox.com/scl/fi/eeo3kkifqhrm6xrxu3ikj/saldo-acumulado.sql?rlkey=deposd0qrf27lrw2zfbjk8ssa&dl=0
Captura
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Ivan

CONSULTA SQL - SALDO ACUMULADO

Publicado por Ivan (1 intervención) el 21/03/2024 09:36:35
Hola,

yo tengo alguna consulta similar para calcular "acumulaciones" y creo que en tu caso el error es que en la cláusula GROUP BY, estás agrupando por la columna T1.Transaccion, lo que significa que cada fila se agrupará individualmente por su número de transacción. Esto probablemente no dará el resultado deseado para calcular el acumulado de los galones por transacción.

Prueba con una subconsulta para calcular el acumulado de los galones antes de unirlo con el conjunto de datos original.

1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
    T1.transaccion,
    T1.surtidor,
    T1.cod,
    T1.Galones,
    (SELECT SUM(T2.Galones)
     FROM BD4_Transacciones_XPump T2
     WHERE T2.Surtidor = T1.Surtidor AND T2.Cod = T1.Cod AND T2.Transaccion <= T1.Transaccion) AS acumulado,
    T1.Contometros
FROM
    BD4_Transacciones_XPump T1
ORDER BY
    T1.transaccion;

Según la DB el ORDER BY quizás no sea necesario, espero que funcione.

Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

CONSULTA SQL - SALDO ACUMULADO

Publicado por markho34 (21 intervenciones) el 22/03/2024 02:12:59
buenas noches, quedo perfecto muchisimas gracias solo agrege el order by

1
2
3
4
5
6
7
8
9
10
11
12
SELECT
    T1.transaccion,
    T1.surtidor,
    T1.cod,
    T1.Galones,
    (SELECT SUM(T2.Galones)
     FROM BD4_Transacciones_XPump T2
     WHERE T2.Surtidor = T1.Surtidor AND T2.Cod = T1.Cod AND T2.Transaccion <= T1.Transaccion) AS acumulado,
    T1.Contometros
FROM
    BD4_Transacciones_XPump T1
order by 2,3,1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar