你好,我想从我的查询得到正确的总和,我知道这个工程: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