Hoe te bedragen en af ​​te trekken met behulp van SQL?

Ik gebruik MySQL en ik heb twee tabellen:

master_table

  • orderno
  • item
  • Aantal

stock_bal

  • item
  • bal_qty

Master tabel heeft dubbele ORDERNOen ITEMwaarden. Ik heb Total QTYmet behulp van SQL ‘Group met’ Clausule.

Ik moet BAL_QTYVANAF ITEM(MASTER_TABLE). Ik heb sum QTYWaarde met behulp van query (eigenlijk zijn er veel rijen).


Antwoord 1, Autoriteit 100%

Ik denk dat dit is waarnaar u op zoek bent. NEW_BALis de som van QTYS 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

Other episodes