Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Consulta de suma y ultimo campo (https://www.clubdelphi.com/foros/showthread.php?t=48852)

Carlex 05-10-2007 17:11:03

Consulta de suma y ultimo campo
 
Buenas tengo una base de datos en access para el control de almacen guardar el item, la cantidad de ingreso o egreso, el costo q implico y cual fue la cantidad anterior al movimiento (esto para sacar saldos a una fecha determinada)
Q tiene la siguiente estructura

Cod Item CantI CantE CantAnt CostoI CostoE
1466--AMBIE----0----1-----0-------$b 0,000-------$b 7,95
1494--AMBIE----12---0-----12------$b 120,00------$b 0,00
1473--CABLO----5----0-----5-------$b 40,00-------$b 0,00
1474--CABLO----0----1-----4-------$b 0,000-------$b 8,00
1483--DISK-----0----1-----62-------$b 0,000-------$b 1,79
1487--DISK-----0----1-----61-------$b 0,000-------$b 1,79
1491--DISK-----0----3-----58-------$b 0,000-------$b 5,37

Ahora bien debo armar un reporte del mes para lo cual debo obtener el siguiente resultado.

Item CantI CantE CantAnt CostoI CostoE
AMBIE----12----1----12----$b 120,00---$b 7,95
CABLO----5----1-----4-----$b 40,00----$b 8,00
DISK------0----5 ----58----$b 0,000----$b 5,58

Es decir q agrupe los items, sume las cantidades de ingreso y egreso, sume los costos de ingreso y egreso y q me ponga la ultima cantidad (saldo).

Intente con una subconsulta para 1ro obtener la ultima cantidad y luego con otra consulta los totales pero no me sale :confused:. Alguna sugerencia para una consulta o de plano hay q cambiar la estructura de la tabla? :(
Muchas gracias por el tiempo prestado :p

fjcg02 05-10-2007 19:20:41

Prueba con esto

Código SQL [-]
select item, sum(canti) AS CANTI,sum(CantE) AS CANTE,
last(cantAnt) as CANTANT, sum(ConstoI) AS COSTOI, sum(CostoE) AS COSTOE
group by item
order by Cod

El unico problema que puedes tener es que el last ( ultimo registro ) no coincida con el orden.

Suerte y un saludo

Carlex 05-10-2007 19:28:13

Cita:

El unico problema que puedes tener es que el last ( ultimo registro ) no coincida con el orden.
Probe este query pero como mensionas justamente last no me bota el ultimo registro, como se podria subsanar ese problema si el orden en el q se ingreso esta bien. Cuando colo last(Cod) recien me bota el saldo(CantA) correcto. :confused:

Gracias por la respuesta

fjcg02 07-10-2007 22:15:50

Prueba a incluir en los campos de ordenación el que te interesa, a pesar de que no se visualice.
No estoy seguro de que funcione, pero tampoco de que no lo haga.

Código SQL [-]
select item, sum(canti) AS CANTI,sum(CantE) AS CANTE,
last(cantAnt) as CANTANT, sum(ConstoI) AS COSTOI, sum(CostoE) AS COSTOE
group by item
order by Cod, CantAnt

Saludos

Carlex 08-10-2007 22:11:12

Probe lo q indicas pero la consulta no funciona dado q COD debe estar dentro del GROUP BY. Y si esta la agrego ordena sin agrupar ni nada.

Creo q la solucion podria pasar por una subconsulta o de plano cambiar la estructura de la tabla...:confused:

fjcg02 09-10-2007 21:48:16

A grandes males grandes remedios.

Incluye el campo COD , y luego pasa de él: no lo visualices, no lo utilices para nada, sólo para lo que quieres.

Código SQL [-]
select item, last(cod),sum(canti) AS CANTI,sum(CantE) AS CANTE,
last(cantAnt) as CANTANT, sum(ConstoI) AS COSTOI, sum(CostoE) AS COSTOE
group by item
order by item, cod

Ya nos dirás.

Saludos

Carlex 10-10-2007 22:02:11

Por lo menos access no permite eso, al estar en el ORDER BY debe aparecer en el GROUP BY ese mensaje sale al momento de ejecutar la consulta :(


La franja horaria es GMT +2. Ahora son las 05:58:43.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi