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

第一张桌子是

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


第二张桌子是

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


InvoiceId是上一个表IdInvoices列的外键

第三张桌子是

`InvoiceItemTaxes`
(

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


和第四张桌子

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


最后一张表包含三种税,分别是3%,10%和15%。

我正在尝试获取类似的内容-带有InvoiceNumberTotal without taxesTax1Tax2Tax3Total with taxes列的表。

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

最佳答案

如果我的理解正确,则可以对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


一些字段可能有些偏离-样本数据不完整。

07-28 03:01
查看更多