基于MySQL含税费信息的账单项目报表生成需求
嘿,我来帮你搞定这个带税费信息的项目报表生成需求!先把涉及的数据库表结构整理清楚,然后给你写好对应的SQL查询,这样就能直接生成你要的报表啦~
涉及的数据库表结构
1. BillableDatas表
| BIL_Id | BIL_Date | BIL_Type | BIL_Item | BIL_Rate | BIL_Quantity |
|---|---|---|---|---|---|
| 1 | 2018-03-01 | Night | 0 | 105 | 1 |
| 2 | 2018-03-02 | Night | 0 | 105 | 1 |
| 3 | 2018-03-01 | Item | 30 | 15 | 2 |
| 4 | 2018-03-01 | Item | 31 | 21 | 1 |
| 5 | 2018-03-02 | Item | 30 | 15 | 2 |
| 6 | 2018-03-02 | Item | 31 | 21 | 1 |
2. SalesTaxes表
注:STX_Amount为百分比数值
| STX_Id | STX_TaxeName | STX_Amount |
|---|---|---|
| 8 | Tax 1 | 5.000 |
| 9 | Tax 2 | 5.000 |
| 10 | Tax 3 | 19.975 |
3. ApplicableTaxesInventory表
注:ATX_INVId关联Inventory表的INV_Id,ATX_STXId关联SalesTaxes表的STX_Id
| ATX_INVId | ATX_STXId |
|---|---|
| 30 | 9 |
| 30 | 10 |
| 31 | 9 |
4. Inventory表
| INV_Id | INV_Name | INV_Rate |
|---|---|---|
| 30 | Breakfast | 15.00 |
| 31 | Paid-TV | 21.00 |
| 32 | Wine | 19.00 |
需求说明
需要生成包含税费信息的项目列表,展示每个计费项的基础信息、对应税费名称、税费金额,以及含税总价等内容。
解决方案:SQL查询语句
SELECT bd.BIL_Id, bd.BIL_Date, bd.BIL_Type, inv.INV_Name AS BIL_Item_Name, bd.BIL_Rate, bd.BIL_Quantity, (bd.BIL_Rate * bd.BIL_Quantity) AS Subtotal, st.STX_TaxeName, st.STX_Amount AS Tax_Percentage, ROUND((bd.BIL_Rate * bd.BIL_Quantity) * (st.STX_Amount / 100), 2) AS Tax_Amount, ROUND((bd.BIL_Rate * bd.BIL_Quantity) * (1 + st.STX_Amount / 100), 2) AS Total_With_Tax FROM BillableDatas bd LEFT JOIN Inventory inv ON bd.BIL_Item = inv.INV_Id LEFT JOIN ApplicableTaxesInventory ati ON inv.INV_Id = ati.ATX_INVId LEFT JOIN SalesTaxes st ON ati.ATX_STXId = st.STX_Id WHERE bd.BIL_Type = 'Item' -- 若需要包含Night类型,直接删除此条件即可 ORDER BY bd.BIL_Date, bd.BIL_Id;
查询说明
- 用LEFT JOIN关联所有相关表,把计费项和对应的库存名称、适用税费关联起来;
- 自动计算
Subtotal(单价×数量)、Tax_Amount(小计×税率百分比)、Total_With_Tax(小计+税费),并保留两位小数; - 如果要包含
Night类型的计费项,删掉WHERE条件就行,不过这类项没有对应税费记录,税费相关字段会显示为NULL。
查询结果示例
| BIL_Id | BIL_Date | BIL_Type | BIL_Item_Name | BIL_Rate | BIL_Quantity | Subtotal | STX_TaxeName | Tax_Percentage | Tax_Amount | Total_With_Tax |
|---|---|---|---|---|---|---|---|---|---|---|
| 3 | 2018-03-01 | Item | Breakfast | 15 | 2 | 30 | Tax 2 | 5.000 | 1.50 | 31.50 |
| 3 | 2018-03-01 | Item | Breakfast | 15 | 2 | 30 | Tax 3 | 19.975 | 5.99 | 35.99 |
| 4 | 2018-03-01 | Item | Paid-TV | 21 | 1 | 21 | Tax 2 | 5.000 | 1.05 | 22.05 |
| 5 | 2018-03-02 | Item | Breakfast | 15 | 2 | 30 | Tax 2 | 5.000 | 1.50 | 31.50 |
| 5 | 2018-03-02 | Item | Breakfast | 15 | 2 | 30 | Tax 3 | 19.975 | 5.99 | 35.99 |
| 6 | 2018-03-02 | Item | Paid-TV | 21 | 1 | 21 | Tax 2 | 5.000 | 1.05 | 22.05 |
内容的提问来源于stack exchange,提问作者user9516731
相关产品推荐
相关产品推荐

