Reputation: 93
Below is my query. When I comment out the last comparison WHERE factuurbedrag <> totaalbedrag_regels
the query returns a consistent set of data. When that where statement is active, it is different. What am i doing wrong?
Code:
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
Upvotes: 0
Views: 78
Reputation: 18747
If your amutas.bedrag
and faktuur.bdr_ev_ed_val
are not int
type, you are hitting the common bug of comparing floating-point numbers for equality. A workaround is using the absolute difference comparison like WHERE ABS(factuurbedrag - totaalbedrag_regels) > 0.01
. Correct the constant as you see fit.
Upvotes: 1