我从数据库中获取税收值时遇到问题。我会尽可能简化它。
第一张桌子是
Invoices
(
`Id`,
`Date`,
`InvoiceNumber`,
`Total`
)
第二张桌子是
`InvoiceItems`
(
`Id`,
`Total`,
`TotalWithoutTax`,
`TotalTax`,
`InvoiceId`
)
InvoiceId
是上一个表Id
中Invoices
列的外键第三张桌子是
`InvoiceItemTaxes`
(
`Id`,
`TaxAmmount`,
`InvoiceItemId`,
`TaxId`
)
和第四张桌子
`Taxes`
(
`Id`,
`Value`
)
最后一张表包含三种税,分别是3%,10%和15%。
我正在尝试获取类似的内容-带有
InvoiceNumber
,Total without taxes
,Tax1
,Tax2
,Tax3
和Total with taxes
列的表。我尝试了许多不同的方法,但是我无法获得每张发票的税额。最终结果将是一个表格,在该表格中我可以看到每张发票以及每种税款的指定金额(每个发票项目的每个税款金额的总和)。
最佳答案
如果我的理解正确,则可以对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
一些字段可能有些偏离-样本数据不完整。