Saltar al contenido

¿Cómo SUMAR y RESTAR usando SQL?

Nuestros mejores programadores agotaron sus provisiones de café, investigando día y noche por la resolución, hasta que Francisco halló la respuesta en Gitea por lo tanto hoy la comparte con nosotros.

Solución:

Creo que esto es lo que estás buscando. NEW_BAL es la suma de QTYse resta del saldo:

SELECT   master_table.ORDERNO,
         master_table.ITEM,
         SUM(master_table.QTY),
         stock_bal.BAL_QTY,
         (stock_bal.BAL_QTY - SUM(master_table.QTY)) AS NEW_BAL
FROM     master_table INNER JOIN
         stock_bal ON master_bal.ITEM = stock_bal.ITEM
GROUP BY master_table.ORDERNO,
         master_table.ITEM

Si desea actualizar el saldo del artículo con el nuevo saldo, utilice lo siguiente:

UPDATE stock_bal
SET    BAL_QTY = BAL_QTY - (SELECT   SUM(QTY)
                            FROM     master_table
                            GROUP BY master_table.ORDERNO,
                                     master_table.ITEM)

Esto supone que registró la resta al revés; resta las cantidades en el pedido del saldo, lo que tiene más sentido sin saber más sobre sus tablas. Simplemente intercambie esos dos para cambiarlo si me equivoqué:

(SUM(master_table.QTY) - stock_bal.BAL_QTY) AS NEW_BAL

No estoy seguro exactamente de lo que quieres, pero creo que está en la línea de:

SELECT `Item`, `qty`-`BAL_QTY` as `qty` FROM ((SELECT Item, SUM(`QTY`) as qty FROM `master_table` GROUP BY `ITEM`) as A NATURAL JOIN `stock_table`) as B

Ejemplo simple de copiar y pegar con subconsultas. Tenga en cuenta que ambas consultas deben devolver 1 fila:

select
(select sum(items_1) from items_table_1 where ...)
-
(select count(items_2) from items_table_1 where ...) 

as difference

Sección de Reseñas y Valoraciones

Puedes corroborar nuestra publicación escribiendo un comentario y valorándolo te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *