Totalizacion

13/10/2008 - 18:07 por GianCarlos | Informe spam
Hola,

Estoy tratando de totalizar mi orden de compras, pero no me guarda la
informacion en la orden de compras respectiva, me lo guarda en la siguiente
orden de compras.
No se como decirle a mi procedimiento que tiene que comparar los po id en
las dos tablas despues si son iguales sumar los campos Linetotal que estan en
el la tabla "podetl" y despues guardar el resultado en el campo subtotal en
la tabla porder.
lo que tengo hasta ahora es esto.
SELECT @Subtotal = SUM(LineTotal)
FROM POdetl
WHERE POID = POID
GROUP BY POID


INSERT INTO Porder
(Subtotal)
VALUES(@SubTotal)

si alguien me puede dar una mano por favor.

Gracias

Preguntas similare

Leer las respuestas

#6 GianCarlos
15/10/2008 - 16:23 | Informe spam
Carlos,

Excelente esa syntaxis era la que necesitaba
Funciono de una vez
Muchisimas Gracias
Respuesta Responder a este mensaje
#7 Ele
15/10/2008 - 18:08 | Informe spam
Este query te recalcula todo el universo de ordenes de compras existentes
Update t1
Set t1.Subtotal = (SELECT SUM(t2.LineTotal)
FROM POdetl t2
WHERE t2.POID = t1.POID)
From PORDER t1
pero esto cada vez se va hacer mas lento ademas no tiene caso tomar todos
los registros si solo estas agregando a uno el que tienes en la variable
@poid

"GianCarlos" escribió en el mensaje
news:
Ele,

El select que tu mencionas no es el que deberia utilizar para hacer la
comparacion, ese select es utilizado para anadir el numero de orden de
compras de el encabezado a el detalle.
El select que debe utilizar es el siguiente

SELECT @Subtotal = SUM(LineTotal)
> FROM POdetl
> WHERE POID = POID
> GROUP BY POID
>



que es donde selecciona los totales por linea y hace un subtotal con ellos
y
los debe de guardar en la tabla PORDER, el cual me lo hace pero no en el
numero de orden de compras que corresponde, me lo esta guardando en la
siguiente orden de compras que porsupuesto esta en blanco.
Ya trate algo asi y no funciono.

SELECT @Subtotal = SUM(LineTotal)
FROM POdetl
WHERE PORDER.POID = PODETL.POID
GROUP BY POID
Que mas podria hacer

Respuesta Responder a este mensaje
#8 Carlos M. Calvelo
15/10/2008 - 19:59 | Informe spam
Hola Ele,

On 15 okt, 18:08, "Ele" wrote:
Este query te recalcula todo el universo de ordenes de compras existentes
Update t1
Set t1.Subtotal = (SELECT SUM(t2.LineTotal)
FROM POdetl t2
WHERE t2.POID = t1.POID)
From PORDER t1
pero esto cada vez se va hacer mas lento ademas no tiene caso tomar todos
los registros si solo estas agregando a uno el que tienes en la variable
@poid




No es que no tenga sentido solo por eso, sino que el atributo
'Subtotal' en la tabla Porder no lo necesita para nada. Ese
total se puede calcular con una consulta y esta a su vez
se puede meter en una vista.

select o.poid,
<demas atributos>...,
isnull(sum(d.LineTotal),0) as TotalOrden
from Porder o join POdetl d on o.POID=d.POID

Pero bueno...

Saludos,
Carlos
Respuesta Responder a este mensaje
#9 Carlos M. Calvelo
15/10/2008 - 20:04 | Informe spam
<...>

from Porder o join POdetl d on o.POID=d.POID




bueno.. mejor un left join.

Saludos,
Carlos
Respuesta Responder a este mensaje
#10 Ele
15/10/2008 - 20:34 | Informe spam
hola
en una sola consulta se puede mostar todo y es correcta tu solucion, aunque
en este caso lo que percibi fue un modelo llamado maestro-detalle donde en
la tabla maestro contiene los totales.
seria cuestion de evaluar el performance al mostrar un dato que ya existe en
un campo (Subtotales) o calcularlo en un subquery ( Sum(linetotal) )


"Carlos M. Calvelo" escribió en el mensaje
news:
<...>

from Porder o join POdetl d on o.POID=d.POID




bueno.. mejor un left join.

Saludos,
Carlos
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida