2014-04-30 100 views
0

以下是我的查詢。當我評論最後的比較WHERE factuurbedrag <> totaalbedrag_regels時,查詢返回一組一致的數據。當那個where語句被激活時,它是不同的。我究竟做錯了什麼?SQL Query每次運行時都會返回不同的數據集(不一致)

代碼:

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

目前尚不清楚問題是什麼。您能否展示您認爲一致的一組數據以及您得到的結果?不知道什麼是factuurbedrag和totaalbedrag_regels也不能幫助我們理解您的問題。 – Frazz

回答

1

如果您amutas.bedragfaktuur.bdr_ev_ed_valint類型,你打的比較平等的浮點數的常見錯誤。解決方法是使用絕對差異比較,如WHERE ABS(factuurbedrag - totaalbedrag_regels) > 0.01。按照你認爲合適的方法修正這個常量。

+0

這確實解決了小差異!不知道我不得不在一個四捨五入的問題搜索...感謝您的快速反饋! –

相關問題