【发布时间】:2015-03-15 19:11:27
【问题描述】:
我在从数据库中获取税值时遇到问题。我会尽量简化。
第一个表是
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、Total without taxes、Tax1、Tax2、Tax3 和 Total with taxes 列的表格。
我尝试了很多不同的方法,但我根本无法获得每张发票的税额。最终结果将是一个表格,我可以在其中看到每张带有指定税额的发票(每个发票项目的每个税额的总和)。
【问题讨论】:
-
样本数据和期望的结果会让这更容易理解。也许您正在寻找条件聚合(
case和max)来组合Taxes表中的多行,以获得输出中的多列。 . . -
好吧...假设您创建了包含四个项目的发票 - 铅笔(3% 税,1 美元不含税),PostIt(3% 税,2 美元),笔记本(10%,5 美元) ) 和包装纸 (15%, 1$)。它们每个都在
InvoiceItems表中,具有各自的值。此外,您将在InvoiceItemsTaxes中将它们中的每一个都包含在仅税额中。最后,您将在Invoices中有一个条目 - 发票号。 1,总共9美元不含税)。我正在尝试获取所有发票的清单,其中指定了每种税率的缴纳税额和总额(不含税)。在这个例子中 SQL 查询将如何进行?