Amigos estoy hace 10 días tratando de sacar esta consulta, a ver si me dan una idea, de porque el error....
Escenario:
Tabla 1-Articulos
id - Articulo - Stock
1 - zapallo - 10
2 - peras - 20
3 - Tomate - 12
Tabla 2-Movimientos
id - Articulo - Tipo_Mov - Cantidad
1 - zapallo - E - 20
2 - zapallo - E - 30
3 - peras - S - 5
4 - peras - E - 10
Tabla 3-Habilitados
id - articulo - perfil
1 - zapallo - 1
2 - peras - 1
3 - tomate - 0
La idea es actualizar el stock de la tabla articulos, sumando las "E" entradas y restando las "S" salidas de los movimientos, tomando como parametro los articulos habilitados "1" de la tabla Habilitados.
Para eso trate de hacer lo siguiente:
UPDATE articulos SET stock=calculo.cantidad
FROM articulos JOIN ( SELECT
sum(case tipo_mov
when 'E' then cantidad
when 'S' then -cantidad
end)
cantidad, tipo_mov, articulo
FROM movimientos
JOIN habilitados ON movimientos.articulo = habilitados.articulo
WHERE habilitados.perfil = 1
GROUP BY articulo, tipo_mov) calculo ON
articulos.articulo = calculo.articulo
Que es lo que me da esto?
Dos resultados por cada articulo. Cuando en realidad me tendria que dar uno solo.
Ideas
Desde ya mil gracias.
Gustavo