我从数据库获取税值时遇到问题。我会尽可能地简化它。
第一张表是
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
列的表格。
我尝试了很多不同的方法,我根本无法获得每张发票的税额。最终结果将是表格,其中我可以看到每个发票具有指定的每个税额(每个发票项目的每个税额的总和)。
答案 0 :(得分:1)
如果我理解正确,您可以使用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
某些字段可能有点偏离 - 样本数据不完整。