私はMySQLを使用しており、2つのテーブルがあります。
master_table
stock_bal
マスターテーブルにORDERNO
とITEM
の値が重複しています。 SQLの「GROUP BY」句を使用して合計QTY
を取得しました。
ITEM
(master_table)の合計からBAL_QTY
を差し引く必要があります。クエリを使用してSUM QTY
値を取得しました(実際には多くの行があります)。
これがあなたが探しているものだと思います。 NEW_BAL
は、バランスから差し引かれたQTY
sの合計です。
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)
これは、減算を後方にポストしたことを前提としています。残高から注文の数量を減算します。これは、テーブルについて詳しく知らなくても最も理にかなっています。私が間違っていた場合は、これら2つを交換して変更してください。
(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
私はこの種の手法を試しました。データからの減算に(-1)を乗算し、次に両方の量をsum()すると、減算された量が得られます。
-- 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
宿題...
待ってください。注文したアイテムの総数から在庫のアイテムの残高を差し引く必要がありますか?少し後ろ向きに聞こえます。一般的に、人々はそれを逆に行うと思います。注文したアイテムの合計数を残高から差し引きます。
本当にそうする必要がある場合... ITEMが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