显示来自数据库的每个发票项目的税

时间:2015-03-15 19:11:27

标签: mysql sql

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

第一张表是

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%。

我想尝试这样的事情 - 包含InvoiceNumberTotal without taxesTax1Tax2Tax3Total with taxes列的表格。

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

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您可以使用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

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