使用SSIS時我遇到了一個非常奇怪的問題(我也嘗試過在SQL Server Management中編寫查詢工作室和我得到了同樣的結果)。在SSIS數據源T-SQL中使用WHERE ValX> ValY時,結果中包含ValX = ValY的列VALD
我有一個查詢應該顯示其中某個值從上次增加的行。爲此,我有2個表格 - 舊的和新的,它們(如果我簡單的話)包含ID和值(以及其他對這種情況不重要的列)。我加入這兩個表中的ID並比較舊值和新值。兩列(舊的和新的)都是浮動的(SSIS將它們視爲DT_R8)。
讓我來看看查詢的樣子。
SELECT n.ID, n.Val, o.Val
FROM New as n INNER JOIN Old as o ON n.ID = o.ID
WHERE n.Val > o.Val
有幾千條記錄在兩個表和幾乎所有的人都要經過這個查詢,結果是正確的,但在所有這些記錄3出現在結果中設置不正確。這3個參數具有相同的Old.Val和New.Val(值分別爲:4803.2,1336.44,2883.25),但它們仍然出現在結果集中,儘管它們不符合條件。我還要補充一點,這3個並不是唯一帶有小數位數的記錄,還有很多很多,所有這些工作都很好。
我已經嘗試了幾次轉換,但沒有任何改變。
我也嘗試過從這些表中導出數據的幾種方法,以查看這些值是否實際上彼此不同,並且以任何方式我都這樣做,這6個(每個3個案例都有2對)數字總是似乎是平等的。無論如何導出數據,在第二個小數位後面都不會出現任何內容。
有沒有人遇到類似的東西?我會非常感謝任何建議。
請將兩列轉換爲WHERE子句中的公共數據類型並檢查相同。 (示例* WHERE CAST(n.Val AS MONEY)> CAST(o.Val AS MONEY)*) –
哇,那就解決了!謝謝! –