Precisamente, mi intención era realizar un proceso de actualización nocturno. Aunque la idea de mantener los resultados de stock en linea, me parece muchísimo más.
He podido realizar el UPDATE sin necesidad de CURSOR gracias a ambos. Sólo que la resta no me ha resultado como esperaba, les muestro mi código:
Código SQL:
Ver originalUPDATE Productos SET Stock=Stock-venta.vendido FROM (SELECT SUM(CANTIDAD) AS vendido FROM Ventas WHERE FECHA>='04-07-2012' AND FECHA<='05-07-2012' GROUP BY ID_PROD) AS venta
WHERE Productos.Codigo_producto IN
(SELECT Ventas.Codigo_producto FROM Ventas
WHERE FECHA >='04-07-2012' AND FECHA<='05-07-2012')
En este día tengo 3 artículos vendidos, con cantidad de 4, 6 y 18, respectivamente. El primero si es restado 4, pero los demás restan valores que no son. No sé que estaré haciendo mal.
Edito:
Ya pude solucionar el problema, había olvidado utilizar el INNER JOIN que en principio me había recomendado iislas, después de modificar y probar el nuevo UPDATE la resta se generó exitosamente, dejo aquí el código
Código SQL:
Ver originalUPDATE Productos
SET Stock=Stock-venta.vendido
FROM Productos prod
INNER JOIN (SELECT Codigo_producto, SUM(CANTIDAD) AS vendido FROM Ventas WHERE FECHA>='04-07-2012' AND FECHA<='05-07-2012' GROUP BY Codigo_producto) AS venta
ON prod.Codigo_producto = ventas.Codigo_producto
Muchísmas gracias tanto a iislas como a Libras
Saludos cordiales