0

如果贷方和借方帐号相同,则需要从借方总额中减去贷方总额。如果某个值只存在于借方帐号,则无需减去,只需获取该值即可。

一个名为 18_7_ChartOfAccounts 的表如下所示:

ID | AccountNumber
-------------
1  | 2310
2  | 2380

另一个名为 2_1_journal 的表如下所示:

ID | Amount | DebitAccount | CreditAccount
-------------------------------------------
1  | 25.00  | 2310         | 2380
2  | 200.00 | 2310         | 2380
3  | 4.00   | 2380         | 2310
4  | 200.00 | 2380         | 2310
5  | 50.00  | 2380         | 2620

根据建议创建的查询将列Amount中值DebitAccount相同的所有值相加。

查询执行以下操作:SUM(Amount)FROM table 2_1_journalWHERE DebitAccountin table 2_1_journalis the same as AccountNumberin table18_7_ChartOfAccounts

$query_debit_beginning = "SELECT SUM(j.Amount), j.DebitAccount FROM 18_7_ChartOfAccounts AS c LEFT JOIN 2_1_journal AS j ON (c.AccountNumber = j.DebitAccount) group by j.DebitAccount";

不明白如何从另一个中减去一个总和。

需要得到这样的输出

帐号是 2310,值是 21.00 (25+200-4-200)

帐号是 2380,价值是 29.00 (4+200+50-25-200)

帐号为 2620,值为 -50.00 (0(DebitAccount 营业额) - 50(CreditAccount 营业额))

查询应该如下:

(表中的SUM(Amount)FROM 表2_1_journalWHEREDebitAccount与表中2_1_journal相同)AccountNumber18_7_ChartOfAccounts

然后

SUM(Amount)表中的FROM 表2_1_journalWHERECreditAccount与表中2_1_journal的相同AccountNumber18_7_ChartOfAccounts

然后

如果DebitAccount等于,则从CreditAccountCreditAccount中减去DebitAccountSUM(Amount)SUM(Amount)

不知道如何创建这样的查询。请指教。

根据建议尝试为选择添加条件。这是有修改的。代码是否正确?尝试并出现必要的工作

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

FROM 18_7_ChartOfAccounts AS a

LEFT JOIN (
SELECT
    DebitAccount, RecordYear,
    SUM( Amount ) AS Amount
FROM 2_1_journal WHERE RecordYear = 2013
GROUP BY DebitAccount
) d ON (a.AccountNumber = d.DebitAccount)

LEFT JOIN (
SELECT
    CreditAccount, RecordYear,
    SUM( Amount ) AS Amount
FROM 2_1_journal WHERE RecordYear = 2013
GROUP BY CreditAccount
) c ON (a.AccountNumber = c.CreditAccount)
4

2 回答 2

6
SELECT
    a.AccountNumber,
    IFNULL( d.Amount, 0 ) - IFNULL( c.Amount, 0 ) AS Amount

FROM 18_7_ChartOfAccounts AS a

LEFT JOIN (
    SELECT
        DebitAccount,
        SUM( Amount ) AS Amount
    FROM 2_1_journal
    GROUP BY DebitAccount
) d ON a.AccountNumber = d.DebitAccount

LEFT JOIN (
    SELECT
        CreditAccount,
        SUM( Amount ) AS Amount
    FROM 2_1_journal
    GROUP BY CreditAccount
) c ON a.AccountNumber = d.CreditAccount
于 2013-07-01T13:57:40.017 回答
2

像这样的东西应该这样做(未经测试)

SELECT a.ID, a.AccountNumber, IFNULL( CreditAmount, 0 ) - IFNULL( DebitAmount, 0 ) 
FROM 18_7_ChartOfAccounts a
LEFT OUTER JOIN (SELECT DebitAccount AS AccountNo, SUM(Amount) AS DebitAmount FROM 2_1_journal GROUP BY DebitAccount) b ON a.AccountNumber = b.AccountNo
LEFT OUTER JOIN (SELECT CreditAccount AS AccountNo, SUM(Amount) AS CreditAmount FROM 2_1_journal GROUP BY CreditAccount) c ON a.AccountNumber = c.AccountNo
LEFT OUTER JOIN 2_1_journal c ON a.AccountNumber = c.CreditAccount
GROUP BY a.ID, a.AccountNumber
于 2013-07-01T13:47:59.740 回答