以下是我的查询。当我注释掉最后一个比较WHERE factuurbedrag <> totaalbedrag_regels
时,查询返回一组一致的数据。当where语句处于活动状态时,它是不同的。我做错了什么?
代码:
SELECT * FROM
(SELECT
faktuur.faknr, SUM(faktuur.bdr_ev_ed_val) AS factuurbedrag,totaalbedrag_regels, bedrijfsnaam, contractnr
FROM
frhsrg AS faktuur
INNER JOIN Items ON faktuur.artcode = Items.ItemCode
JOIN
(SELECT
SUM(amutas.bedrag) AS totaalbedrag_regels,amutas.reknr,amutas.faktuurnr AS faknr,cicmpy.cmp_name AS bedrijfsnaam, amutas.project AS contractnr
FROM
[001].[dbo].[amutak]
INNER JOIN [amutas] ON amutak.bkstnr = amutas.bkstnr
INNER JOIN cicmpy ON amutas.debnr = cicmpy.debnr
WHERE
amutak.dagbknr = 90 AND amutak.status NOT IN ('V', 'O') AND amutas.reknr in (1161)
GROUP BY
amutas.reknr,amutas.faktuurnr,cicmpy.cmp_name,amutas.project) memoriaal ON faktuur.faknr = memoriaal.faknr
WHERE
items.assortment in (1,3)
GROUP BY
faktuur.faknr,totaalbedrag_regels, bedrijfsnaam,contractnr) controle
WHERE
factuurbedrag <> totaalbedrag_regels
ORDER BY
faknr
答案 0 :(得分:1)
如果您的amutas.bedrag
和faktuur.bdr_ev_ed_val
不是int
类型,那么您就会遇到比较浮点数相等的常见错误。解决方法是使用绝对差异比较,如WHERE ABS(factuurbedrag - totaalbedrag_regels) > 0.01
。根据需要纠正常数。