你好,我想從我的查詢得到正確的總和,我知道這個工程:SQL SUM返回錯誤的結果
SELECT SUM(AMOUNT) From IncomingInvoiceLine inner Join [File] ON IncomingInvoiceLine.FILENUMBER = [File].FILENUMBER WHERE [File].RELATIONCODE = '12TU01'
但是,這是我想這被計算所以沒有貨幣量:
SELECT fmsTotalAmountIncoming INTO TempIncomingAmounts FROM (
SELECT SUM(CASE WHEN fms1.currency != 'EUR'
THEN fms1.amount * fms1.rate
ELSE ISNULL(fms1.amount, 0) END) fmsTotalAmountIncoming
FROM [fms].[dbo].[IncomingInvoiceLine] fms1
WHERE fms1.RELATIONCODE = '12TU01'
) a
SELECT fmsTotalAmountIncoming FROM [fms].[dbo].[TempIncomingAmounts]
DROP TABLE [fms].[dbo].[TempIncomingAmounts]
而且這不會返回正確的結果,它在第一查詢返回返回NULL:
8145.46
但我想不通,爲什麼在貨幣查詢被轉換返回null。它應該返回
8106.546
(我第一次在vb.net使這個當時就想通過寫一個存儲過程,使其更快)。
有沒有人看到它爲什麼這樣做?
嘗試在乘法做一個空檢查:'ISNULL(fms1.amount * fms1.rate,0)'。 –
這沒有什麼區別。關係代碼123K01應該返回0,並返回4927.16,我不知道這個數字來自哪裏。 –
然後取出款項,並將所有值,因此可以確保您比較喜歡像..你也應該然後找到在第二個查詢的38.914 :) – BugFinder