美好的一天!我希望有一个人可以帮助我。下面我写下了我的结构和问题。 我有这张发票详情表: 发票明细表
Invoice | Detail | Product | Price | VAT % | VAT € | TOTAL |
------- | -------|---------|-------|-------|-------|-------|
0001 | 1 | X | € 100 | 21 | € 21 | € 121 |
0001 | 2 | X | € 200 | 21 | € 42 | € 242 |
0001 | 3 | X | € 100 | 6 | € 6 | € 106 |
现在我想创建一个select查询来获取以下值:
所需的查询结果:
Invoice | SumofVAT 6% | SumofVAT 21% |
------- | ------------|--------------|
0001 | €6 | € 63 |
在此查询之后,我可以使用更新查询将此数据写入我的发票表:
Invoice | Client | Date | Price | VAT 6% | VAT 21% |
------- | -------|---------|-------|--------|---------|
0001 | B10 |01-01-01 | € 469 | € 6 | € 63 |
我尝试了很多东西。我遇到的问题是,当一个特定的产品只有一种或多种含有1种增值税的产品时。然后查询返回Null。
我想我应该:
1)查询以计算发票xxxx的总增值税6%(退货发票编号和总增值税为6%)
2)查询以计算发票xxxx的总增值税21%(退货发票编号和总增值税为21%)
3)如果其中一个查询返回Null,则应返回发票编号和增值税总额€0,00
希望有人可以帮助我。
6%QUERY的图片:(21%相同,但标准为' 21')
SQL VERSION:
SELECT FactuurDetails.Factuurnummer, FactuurDetails.[BTW in %],Sum(FactuurDetails.[BTW in EURO]) AS [SumOfBTW in EURO]
FROM FactuurDetails
GROUP BY FactuurDetails.Factuurnummer, FactuurDetails.[BTW in %]
HAVING (((FactuurDetails.Factuurnummer)=[Forms]![Facturen]!
在这里,您可以查看发票是否只有21%(或相反)的产品,查询结果是否为空。
答案 0 :(得分:2)
肯定不是你期望的答案,我会得到一些反对票,但让我们走吧:
将这些内容写入您的发票表是错误的:它违反了规范化的关系设计原则,并引入了传递依赖性。
除非你有客观理由反规范化,否则不要这样做。
此外,如果设计正确,则必须在 InvoiceDetails 之前创建 Invoice 记录,否则无法实现参照完整性。
我强烈建议你阅读relational database design and normalization。
作为一个非常简化的规则:不存储可以重新计算的内容,除非您出于历史原因需要它(但在此处您将税务历史保留在详细信息中)
要计算增值税总额,您可以这样做:
SELECT Invoices.Id, Details.VatRate, Sum([Quant]*[unitprice]*[VatRate]) AS VatAmount
FROM Invoices LEFT JOIN Details ON Invoices.Id = Details.InvId
GROUP BY Invoices.Id, Details.VatRate;
或使用交叉表查询:
TRANSFORM Sum([Quant]*[unitprice]*[VatRate]) AS VatAmount
SELECT Invoices.Id
FROM Invoices LEFT JOIN Details ON Invoices.Id = Details.InvId
GROUP BY Invoices.Id
PIVOT Details.VatRate;
答案 1 :(得分:0)
你可以试试这个。我自己测试了它,我认为它可以获得预期的结果。
<ul class="navigation">
<li class="navigation-items active" sub-nav="false" >
<a data="main-link"><i class="material-icons">perm_identity</i> Option 1</a>
<ul class="sub-nav animate-hide" ng-hide="!subNav.state">
<li><a><i class="material-icons bullet">fiber_manual_record</i> Item 1</a></li>
</ul>
</li>
</ul>
我不知道这样做是否是正确的做法,但据我所知,它会做上面应该做的事情。
编辑:以下是我根据您的示例创建的数据表 和结果截图
<强>结果强>
答案 2 :(得分:0)
要获得可能包含Null的值的总和,您只需要替换:
查询中包含[Value_that_may_be_Null]
的 Nz([Value_that_may_be_Null],0)
(在图形查询设计器和Access SQL中都有效)