我是 Python 的初学者/中级用户,我现在正在尝试构建一个会计程序,以了解有关数据库及其交互方式的更多信息。
我目前有三个不同的 sqlite3 表:ListOfAccounts、GeneralLedger 和 EventLedger。
当您输入一笔新交易时,GeneralLedger 中会有一个条目,然后 EventLedger 中会有多个与 GeneralLedger 中的条目相关的条目,这些条目会分散不同账户之间的交易金额。
现在说说我的问题。在 ListOfAccounts 的借方和贷方列中,我想按 account_nr 对 EventLedger 中的交易进行求和,但无论我尝试什么,我似乎都无法使其正常工作。
如果没有导致错误,则 ListOfAccounts 中的贷方和借方列仍为 0(零)。
有人知道如何解决这个问题吗?
我得到的最接近的解决方案是下面的代码。尽管这只是在 ListOfAccounts 表中返回 0.0。
SELECT L.account_name, SUM(E.debit) AS Balance
FROM EventLedger E
JOIN ListOfAccounts L ON L.account_nr = E.account_nr_E
GROUP BY L.account_name
帐户列表列:
CREATE TABLE IF NOT EXISTS
ListOfAccounts(
account_nr INTEGER,
account_name TEXT,
account_type TEXT,
debit REAL NOT NULL,
credit REAL NOT NULL,
balance REAL NOT NULL);
EventLedger 列:
CREATE TABLE IF NOT EXISTS
EventLedger(
primary_id INTEGER NOT NULL PRIMARY KEY,
entry_id INTEGER,
account_nr_E INTEGER,
debit REAL,
credit REAL);
我想要发生的事情如下:
EventLedger 包含多个条目。 Primary_id Entry_id account_nr_E 借方 贷方 1 1 1001 5000 2 1 4001 5000 3 2 1001 550 4 2 5001 550 5 3 1001 15000 6 3 3010 15000
ListOfAccounts 包含 EventLedger 中帐户的总和。 account_nr account_name account_type 借方 贷方 1001 检查根据。资产 15000 5550 3010 销售收入 15000 4001 汽车费用。成本5000 5001 水电费 550
我可以看到您的查询的问题是您按
L.account_name
进行分组,但您正在对 E.debit
进行求和。这意味着您将获得所有同名账户的借方总额。但是,如果您想获得每个帐户的借方总额,则需要按 E.account_nr_E
进行分组。
更新了sql查询:
SELECT L.account_name, SUM(E.debit) AS Balance
FROM EventLedger E
JOIN ListOfAccounts L
ON L.account_nr = E.account_nr_E
GROUP BY E.account_nr_E