我正在使用下表编写SQLServer 2008:
id user program seconds
------------------------------------
9999 'user01' 'pr01' 5
Run Code Online (Sandbox Code Playgroud)
列'秒'定义为小数(14,0),表中唯一的行是显示的行.
所以我尝试了一些问题:
Q1:
select seconds*0.95 from myTable
union all
select seconds from myTable
Run Code Online (Sandbox Code Playgroud)
它给出了我期望的结果:
4.75
5.00
Run Code Online (Sandbox Code Playgroud)
Q2:
select sum(seconds)*0.95 from myTable
union all
select sum(seconds) from myTable
Run Code Online (Sandbox Code Playgroud)
我期待与第一季度相同的结果,但我得到的结果是:
5
5
Run Code Online (Sandbox Code Playgroud)
Q3:
select sum(seconds)*0.95 from myTable
union all
select sum(seconds)*1.00 from myTable
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我得到了我期望的结果:
4.75
5.00
Run Code Online (Sandbox Code Playgroud)
所以,我想知道为什么Q2没有得到预期的结果.我尝试了相同的例子,'秒'是十进制(2,0)并且工作正常,所以我猜它与小数的大小有关,但在这种情况下,我无法弄清楚为什么Q1和Q3工作时Q2没有.