我有以下表格结构,并试图从这些表格中做出报告:
___ BillableDatas
|--------|------------|---------|--------------|------------|
| BIL_Id | BIL_Date |BIL_Rate | BIL_Quantity | BIL_Status |
|--------|------------|---------|--------------|------------|
| 1 | 2018-03-01 | 105 | 1 | charged |
| 2 | 2018-03-01 | 15 | 2 | notcharged |
| 3 | 2018-03-01 | 5 | 1 | notcharged |
|--------|------------|---------|--------------|------------|
___ SalesTaxes
|--------|--------------|------------|
| STX_Id | STX_TaxeName | STX_Amount |
|--------|--------------|------------|
| 8 | Tax 1 | 5.000 |
| 9 | Tax 2 | 15.000 |
|--------|--------------|------------|
STX_Amount是一个百分比。
___ ApplicableTaxes
|-----------|-----------|
| ATX_BILId | ATX_STXId |
|-----------|-----------|
| 1 | 8 |
| 1 | 9 |
|-----------|-----------|
ATX_BILId是___ BillableDatas的商品ID链接。
ATX_STXId是与___ SalesTaxes的税号ID链接。
我需要每天得到项目的总和
- 不含税
- 含税
这样的方法就是这样:
|------------------|---------------|------------|
| BIL_RateNonTaxed | BIL_RateTaxed | BIL_Status |
|------------------|---------------|------------|
| 105.00 | 126.00 | charged |
| 35.00 | 35.00 | notcharged |
|------------------|---------------|------------|
对总数的说明:
105 = 105*1 - (收费项目的总和乘以数量)
35 = (15*2)+5 - (不收费项目的总和乘以数量)
126.00 = 105+(105*(5+15)/100)
35.00 =没有税,请将未纳税的价值。
我的最后一次尝试就是这个:
SELECT BIL_Status
, SUM(BIL_Rate*BIL_Quantity) BIL_RateNonTaxed
, IFNULL(SUM((BIL_Rate*BIL_Quantity)+(BIL_Rate*BIL_Quantity*total_sales_tax/100)), SUM(BIL_Rate*BIL_Quantity)) BIL_RateTaxed
FROM
( SELECT b.*
, SUM(t.STX_Amount) total_sales_tax
FROM ___BillableDatas b
LEFT JOIN ___ApplicableTaxes bt
ON bt.ATX_BILId = b.BIL_Id
LEFT JOIN ___SalesTaxes t
ON t.STX_Id = bt.ATX_STXId
GROUP
BY ATX_BILId
) x
GROUP
BY BIL_Status
此查询适用于每个项目都有链接的taxe(我的项目#1的情况)。当项目没有链接税(项目#2和#3)时,不会产生总和。
链接中唯一的错误是我应该35而不是30。
感谢。