【发布时间】:2013-04-15 09:40:20
【问题描述】:
我在 mysql 上编写了银行数据库。我正在使用 MySQL 数据透视表生成组明智的记录/报告。
这是我的帐户维护示例表,
----------------------------------------------------------------------------------
account_number | description | Transaction Amount | Balance | transaction_date
----------------------------------------------------------------------------------
1021212 1 0 0 2013-04-02
1021213 1 100 100 2013-04-01
1021212 1 1000 1000 2013-04-02
1021213 1 100 200 2013-04-01
1021214 1 500 500 2013-04-02
1021212 2 100 900 2013-04-09
我需要运行显示每日(每月)交易的完整报告。
这是我要求的报告格式,
-----------------------------------------------------------------------------------
account_number | init_balance | total_banking | total_withdraw | final_balance
----------------------------------------------------------------------------------
1021212 0 1000 100 900
1021213 100 100 0 200
1021214 0 500 0 600
我正在尝试使用数据透视表查询生成此报告,我可以获得除初始和最终余额字段之外的所有信息。
这是我的示例查询,
SELECT account_number,
**xxxxxxxxxx AS init_balance,**
SUM(CASE WHEN m.description = '1' THEN m.amount END) AS total_banking,
SUM(CASE WHEN m.description = '2' THEN m.amount END) AS total_withdraw,
**xxxxxxxxxx AS final_balance**
FROM account
WHERE transaction_date BETWEEN '2013-04-01' AND '2013-04-30'
GROUP BY account_number
ORDER BY account_number
如果有人可以提供帮助,请告诉我编写数据透视表的模式,以获取表格的第一行和最后一行以及分组结果。
【问题讨论】:
-
我不明白你真正想要什么。你从哪里得到init_balance?你有什么桌子,你需要什么桌子?
-
试试这个,但两边都不匹配,CASE WHEN MIN(id) THEN m.balance END AS init,
-
亲爱的 Michael Sivolobov,我需要先将第一行的余额作为初始余额,将同一帐户的最后一行作为最终余额..
-
我在您的示例表中看不到任何余额字段。我只看到交易金额,我不明白为什么账户 1021212 的 init_balance = 0 但账户 1021213 的 init_balance = 100