我刚刚决定讨厌水晶报道......
我在命令中有一个查询,它会向我提供增值税更改历史记录的结果。
SELECT v1.StartDate,
isnull((
SELECT TOP 1 v2.StartDate -1
FROM [HISTVAT] AS v2
WHERE v2.StartDate > v1.StartDate and v1.VATCode=v2.VATCode
ORDER BY v2.StartDate asc
), '9999-12-31') AS EndDate,
v1.VATCode,
v1.Rate
FROM [HISTVAT] AS v1
嗯,这得出了这个结果:
+-----------+------------+---------+------+
| StartDate | EndDate | VATCode | Rate |
+-----------+------------+---------+------+
|2001-01-01 | 9999-12-31 | VAT1 | 0% |
|2001-01-01 | 9999-12-31 | VAT2 | 0% |
|2008-12-01 | 2009-12-31 | VAT3 | 20% |
|2010-01-01 | 2011-01-03 | VAT3 |17.5% |
|2011-01-04 | 9999-12-31 | VAT3 | 20% |
+-----------------------------------------+
我已将查询更改为:
SELECT innerTable.*
FROM (
SELECT v1.StartDate,
isnull((
SELECT TOP 1 v2.StartDate - 1
FROM HISTVAT AS v2
WHERE v2.StartDate > v1.StartDate
AND v1.VATCode = v2.VATCode
ORDER BY v2.StartDate
), '9999-12-31') AS 'EndDate',
v1.VATCode,
v1.Rate
FROM HISTVAT AS v1
) AS innerTable
INNER JOIN VAT T
ON innerTable.VATCode = T.VATCode
INNER JOIN INVOICES s
ON s.VATCode = T.VATCode
WHERE s.InvNo = 'SI150000004'
AND s.InvDate BETWEEN innerTable.StartDate
AND innerTable.EndDate
ORDER BY s.InvNo ASC
现在我要做的是将发票号作为参数传递给主报表上的选项,以便我的查询使用选择数据的发票编号来过滤查询本身。
这样做我改变了: s.InvNo =' SI150000004' 至 s.InvNo = {InvN}
其中要求我在保存时链接到列,我这样做是为了InvNo。
这没有显示正确的费率,并且每个条目重复约100次 - 发票行中只有5行,而且我的页面超过200页。
通过抑制具有相同描述和净价的行来解决重复问题。
我的报告是基本的>描述,净价,增值税,费率,总价。
对于2010年1月1日至2011年1月3日期间创建的发票,费率应为17.5%但我每次只能获得20%...
这有意义吗?我很困惑......