MSSQL - 使用不同的小数精度联合所有

Arm*_*ian 5 sql sql-server precision decimal union-all

当我执行这个SQL时

SELECT 1.4 UNION ALL
SELECT 2.0400 union all
SELECT 1.24
Run Code Online (Sandbox Code Playgroud)

我得到以下结果:

1.4000
2.0400
1.2400

但是当我执行以下SQL时

SELECT sum(1.4) UNION ALL
SELECT sum(2.0400) union all
SELECT sum(1.24)
Run Code Online (Sandbox Code Playgroud)

我得到以下结果:

1.4
2.0
1.2

为什么所有记录的精度(比例)都有差异?不应该总是使用没有数据丢失的精度,就像第一个sql一样?

谢谢.

小智 0

尝试这个以获得相同的结果,

SELECT Cast(Sum(1.4) As Numeric(18,4)) UNION ALL
SELECT Cast(Sum(2.0400) As Numeric(18,4)) union all
SELECT Cast(Sum(1.24) As Numeric(18,4))
Run Code Online (Sandbox Code Playgroud)