0

これがMySQLテーブルです

Amount | DebitAccount | CreditAccount | TransactionPartnerName
--------------------------------------------------------------
 1     |     5610     |     5720      |    name one
 150   |     7210     |     5610      |    name one

このようなものを取得する必要があります

name one result for account 5610 = 149.
((`CreditAccount` for `5610`) - (`DebitAccount` for `5610`)) = 149

言い換えると:

Amounts1)ある場所DebitAccountとある場所5610をすべて合計するTransactionPartnerNamename one

Amounts2)ある場所CreditAccountとある場所5610をすべて合計するTransactionPartnerNamename one

3)CreditAccount合計から控除DebitAccount合計

このコードを試しました

SELECT TransactionPartnerName, SUM(Amount) 
FROM ( SELECT * FROM 2_1_journal) DATA 
WHERE (CAST(DebitAccount AS UNSIGNED) IN (?) OR CAST(CreditAccount AS UNSIGNED) IN (?)) 
GROUP BY TransactionPartnerName

しかし、アカウントの結果は5610value を取得します151SUM(Amount)と のことを意味しDebitAccountますCreditAccount

改造方法を考えてみました。

このようなことを試しました

SELECT TransactionPartnerName, 
IFNULL( d.Amount, 0 ) - IFNULL( c.Amount, 0 ) AS Amount 

FROM 

(
SELECT DebitAccount, 

SUM( Amount ) AS Amount FROM 
( SELECT * FROM 2_1_journal) DATA 

GROUP BY DebitAccount 
) d ON (AccountNumber = d.DebitAccount)

(
SELECT CreditAccount, 
SUM( Amount ) AS Amount FROM 
( SELECT * FROM 2_1_journal) DATA 
GROUP BY CreditAccount 
) c ON (AccountNumber = c.CreditAccount) 

GROUP BY TransactionPartnerName

しかし、空白のページが表示されます....

何を修正する必要があるかアドバイスしてください

4

1 に答える 1