mysql允许连接表为空_如果连接表对MySQL为空,则不执行求和

我有以下表格结构,并试图从这些表格中做出报告:

___ 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。

感谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值