我在从数据库获取税值时遇到问题。我会尽可能简化它。
第一个表是
Invoices
(
`Id`,
`Date`,
`InvoiceNumber`,
`Total`
)
第二个表是
`InvoiceItems`
(
`Id`,
`Total`,
`TotalWithoutTax`,
`TotalTax`,
`InvoiceId`
)
InvoiceId
是上表 Invoices
中 Id
列的外键
第三个表是
`InvoiceItemTaxes`
(
`Id`,
`TaxAmmount`,
`InvoiceItemId`,
`TaxId`
)
和第四个表
`Taxes`
(
`Id`,
`Value`
)
最后一个表包含三种税,比如说 3%、10% 和 15%。
我正在尝试获得类似这样的表格 - 包含列InvoiceNumber
、不含税总计
、Tax1
、Tax2
、Tax3
和 含税总额
。
我尝试了很多不同的方法,但我根本无法获得每张发票的税额。最终结果将是一个表格,我可以在其中看到每张发票的每项税费的指定金额(每个发票项目的每项税额的总和)。
最佳答案
如果我理解正确,您可以使用 sum
和 case
的条件聚合来获取按税组的分割:
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/