SQL Query每次运行时都会返回不同的数据集(不一致)

时间:2014-04-30 08:27:36

标签: sql

以下是我的查询。当我注释掉最后一个比较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

1 个答案:

答案 0 :(得分:1)

如果您的amutas.bedragfaktuur.bdr_ev_ed_val不是int类型,那么您就会遇到比较浮点数相等的常见错误。解决方法是使用绝对差异比较,如WHERE ABS(factuurbedrag - totaalbedrag_regels) > 0.01。根据需要纠正常数。