T-SQL 小数求和为整数

T-SQL sum on decimal results in integer

好吧,T-SQL 没有像我预期的那样行事。 看看这个:

SELECT SUM(DEBET),SUM(CREDIT)
CONVERT(DECIMAL(9,2),
    CASE WHEN SUM(DEBET) - SUM(CREDIT) > 0.00
        THEN CONVERT(DECIMAL(9,2),SUM(CONVERT(DECIMAL(9,2),DEBET))) - CONVERT(DECIMAL(9,2),SUM(CONVERT(DECIMAL(9,2),CREDIT)))
        ELSE CONVERT(DECIMAL(9,2),0.00)
    END
) AS DEBETSALDO
FROM OTHERTABLE

DEBETOTHERTABLE中的CREDIT都是小数类型; DEBET(decimal,null) 根据工具提示。

结果是……

DEBET      CREDIT  DEBETSALDO
6817.07    0.00    0

为什么以及在哪里,如果 DEBET 和 CREDIT 被解释为小数,SQL 是否会在此 select 语句中将我的整个 shebang 转换回整数? 也许再添加几个转换器?

编辑

我刚换了

SELECT DEBET, CREDIT

进入

SELECT SUM(DEBET), SUM(CREDIT)

强调问题出在哪里。结果保持不变。

找到了。

显然,将 decimal(11,2) 转换为 decimal(9,2) 会导致精度损失。

抱歉,我应该仔细检查一下。 但是,6817.07 应该放在 decimal(9,2) 内,对吧?

感谢您的帮助。