我使用MySQL和我有兩個表:如何SUM和SUBTRACT使用SQL?
master_table
- ORDERNO
- 項目
- 數量
stock_bal
- 項目
- BAL_QTY
主表中有重複的ORDERNO
和ITEM
值。我使用SQL'GROUP BY'子句得到總計QTY
。
我需要從ITEM
(master_table)中扣除/減去BAL_QTY
。我使用查詢得到SUM QTY
值(實際上有很多行)。
我使用MySQL和我有兩個表:如何SUM和SUBTRACT使用SQL?
master_table
stock_bal
主表中有重複的ORDERNO
和ITEM
值。我使用SQL'GROUP BY'子句得到總計QTY
。
我需要從ITEM
(master_table)中扣除/減去BAL_QTY
。我使用查詢得到SUM QTY
值(實際上有很多行)。
我認爲這是你在找什麼。 NEW_BAL
是QTY
■從餘額中扣除的總和:
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
如果您想更新與新的平衡項目的平衡,使用以下命令:
UPDATE stock_bal
SET BAL_QTY = BAL_QTY - (SELECT SUM(QTY)
FROM master_table
GROUP BY master_table.ORDERNO,
master_table.ITEM)
這是假設你張貼的減法落後;它會從餘額中減去訂單中的數量,這在最不瞭解您的表格的情況下最有意義。只是交換這兩個改變它,如果我錯了:功課
(SUM(master_table.QTY) - stock_bal.BAL_QTY) AS NEW_BAL
我不知道你想要什麼,但我認爲它的線沿線的是:
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
啊......
所以等待,您需要從那些有項目總數扣除項目餘額中股票已下令?我必須告訴你,這聽起來有點倒退。一般來說,我認爲人們是這樣做的。扣除從餘額中訂購的項目總數。
如果你真正需要做的,雖然...... 假設項目在stock_bal獨特...
SELECT s.ITEM, SUM(m.QTY) - s.QTY AS result
FROM stock_bal s
INNER JOIN master_table m ON m.ITEM = s.ITEM
GROUP BY s.ITEM, s.QTY
我曾嘗試這種技術。將減去的數據乘以(-1),然後求和()這兩個量,然後你將得到減去的量。
-- Loan Outstanding
select 'Loan Outstanding' as Particular, sum(Unit), sum(UptoLastYear), sum(ThisYear), sum(UptoThisYear)
from
(
select
sum(laod.dr) as Unit,
sum(if(lao.created_at <= '2014-01-01',laod.dr,0)) as UptoLastYear,
sum(if(lao.created_at between '2014-01-01' and '2015-07-14',laod.dr,0)) as ThisYear,
sum(if(lao.created_at <= '2015-07-14',laod.dr,0)) as UptoThisYear
from loan_account_opening as lao
inner join loan_account_opening_detail as laod on lao.id=laod.loan_account_opening_id
where lao.organization = 3
union
select
sum(lr.installment)*-1 as Unit,
sum(if(lr.created_at <= '2014-01-01',lr.installment,0))*-1 as UptoLastYear,
sum(if(lr.created_at between '2014-01-01' and '2015-07-14',lr.installment,0))*-1 as ThisYear,
sum(if(lr.created_at <= '2015-07-14',lr.installment,0))*-1 as UptoThisYear
from loan_recovery as lr
inner join loan_account_opening as lo on lr.loan_account_opening_id=lo.id
where lo.organization = 3
) as t3
這是非常有幫助和工作正常,,非常感謝..也需要更新主表的QTY值。這個值來自很多行..我怎麼能這樣做... –