これが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
言い換えると:
Amounts
1)ある場所DebitAccount
とある場所5610
をすべて合計するTransactionPartnerName
name one
Amounts
2)ある場所CreditAccount
とある場所5610
をすべて合計するTransactionPartnerName
name 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
しかし、アカウントの結果は5610
value を取得します151
。SUM(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
しかし、空白のページが表示されます....
何を修正する必要があるかアドバイスしてください