Ik gebruik MySQL en ik heb twee tabellen:
master_table
- orderno
- item
- Aantal
stock_bal
- item
- bal_qty
Master tabel heeft dubbele ORDERNO
en ITEM
waarden. Ik heb Total QTY
met behulp van SQL ‘Group met’ Clausule.
Ik moet ITEM
(MASTER_TABLE). Ik heb sum QTY
Waarde met behulp van query (eigenlijk zijn er veel rijen).
Antwoord 1, Autoriteit 100%
Ik denk dat dit is waarnaar u op zoek bent. NEW_BAL
is de som van QTY
S afgetrokken uit het 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
Als u de itemsaldo met het nieuwe saldo wilt bijwerken, gebruikt u het volgende:
UPDATE stock_bal
SET BAL_QTY = BAL_QTY - (SELECT SUM(QTY)
FROM master_table
GROUP BY master_table.ORDERNO,
master_table.ITEM)
Hiermee wordt ervan uitgegaan dat u de aftrek achteruit hebt gepost; Het trekt de hoeveelheden in de volgorde af van het saldo, wat het meest logisch is zonder meer te weten over uw tafels. Swap die twee gewoon om het te veranderen als ik het fout had:
(SUM(master_table.QTY) - stock_bal.BAL_QTY) AS NEW_BAL
Antwoord 2, autoriteit 4%
Ik weet niet precies wat je wilt, maar ik denk dat het in de trant van:
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
Antwoord 3, autoriteit 4%
Eenvoudig kopiëren & voorbeeld plakken met subquery’s,
Merk op dat beide zoekopdrachten 1 rij moeten retourneren:
select
(select sum(items_1) from items_table_1 where ...)
-
(select count(items_2) from items_table_1 where ...)
as difference
Antwoord 4, autoriteit 2%
ah huiswerk…
Dus wacht, u moet het saldo van de artikelen in voorraad aftrekken van het totale aantal artikelen dat is besteld? Ik moet je zeggen dat dat een beetje achterlijk klinkt. Over het algemeen denk ik dat mensen het andersom doen. Trek het totaal aantal bestelde artikelen van het saldo af.
Als je dat echt moet doen…
Ervan uitgaande dat ITEM uniek is in 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
Antwoord 5, autoriteit 2%
Ik heb dit soort technieken geprobeerd. Vermenigvuldig het aftrekken van de gegevens met (-1) en som() het beide bedrag op, dan krijgt u het afgetrokken bedrag.
-- 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
Antwoord 6
Een voorbeeld voor aftrekking wordt hieronder gegeven:
Select value1 - (select value2 from AnyTable1) from AnyTable2
Value1 & amp; Waarde2 kan tellen, som, gemiddelde uitvoer etc. zijn, maar de waarden moeten comapatibel zijn