mysql - 显示数据库中每个发票项目的税费

标签 mysql sql

我在从数据库获取税值时遇到问题。我会尽可能简化它。

第一个表是

Invoices
(
    `Id`, 
    `Date`, 
    `InvoiceNumber`,
    `Total`
)

第二个表是

`InvoiceItems` 
(
    `Id`, 
    `Total`, 
    `TotalWithoutTax`, 
    `TotalTax`,
    `InvoiceId`
)

InvoiceId 是上表 InvoicesId 列的外键

第三个表是

`InvoiceItemTaxes` 
(

    `Id`, 
    `TaxAmmount`, 
    `InvoiceItemId`, 
    `TaxId`
)

和第四个表

`Taxes` 
(
    `Id`,
    `Value`
)

最后一个表包含三种税,比如说 3%、10% 和 15%。

我正在尝试获得类似这样的表格 - 包含列InvoiceNumber不含税总计Tax1Tax2Tax3含税总额

我尝试了很多不同的方法,但我根本无法获得每张发票的税额。最终结果将是一个表格,我可以在其中看到每张发票的每项税费的指定金额(每个发票项目的每项税额的总和)。

最佳答案

如果我理解正确,您可以使用 sumcase 的条件聚合来获取按税组的分割:

select i.id, i.invoicenumber, i.total as pretaxtotal,
    sum(case when t.value = 3 then iit.TaxAmmount end) taxes_3,
    sum(case when t.value = 10 then iit.TaxAmmount end) taxes_10,
    sum(case when t.value = 15 then iit.TaxAmmount end) taxes_15,
    sum(ii.Total) as overalltotal
from invoices i 
   join InvoiceItems ii on i.id = ii.invoiceid
   join InvoiceItemTaxes iit on ii.id = iit.InvoiceItemId
   join Taxes t on t.id = iit.taxid
group by i.id, i.invoicenumber, i.total

某些字段可能有点偏差——示例数据不完整。

关于mysql - 显示数据库中每个发票项目的税费,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29064976/

相关文章:

mysql - 如何链接一个经销商的产品表和多个零售店的关系? mysql

mysql - 将 varchar 的不同部分转换为日期时间,SQL

sql - 添加基本​​的新 SQL Server 索引会产生更多问题吗?

sql - 将表格中的每一行与其他每一行进行一次且仅一次的比较

sql - 根据 SQL Server 表中的两列删除除最小值之外的所有值

javascript - 将数据从可编辑表单保存到数据库

mysql - 如果在重复键更新时插入

mysql - 从不同的表中获取总和和计数

php - 从上传查询中查看特定 ID

php - mysql 获取对话中的最后一条消息