在将数据int转换为float并进行除法和乘以int时获取更多数据?

时间:2014-03-17 01:25:41

标签: sql sql-server sql-server-2008-r2 sql-server-2012 data-conversion

我有三列,如下表a所示

Student Day     Shifts
129     11       4
91      9        6
166     19       8
164     26      12
146     11      6
147     16      8
201     8       3
164     4       2
186     8      6
165     7      4
171    10      4
104     5      4
1834   134     67

我正在写一个tvf来计算为学生生成的积分值,如下所示

ALTER  function Statagic(
@StartDate date
)

RETURNS TABLE
AS
RETURN
(  
with src as
( select  

Division=case when Shifts=0 then 0 else cast(Day as float)/cast(Shifts as float) end,*
from TableA
)
,tgt as
(select *,Points=Student*Division from src
)
select * from tgt)

当我执行以上tvf时(从Statagic('3/16/2014')中选择*) 我的输出低于

129   11    4   2.75                     354.75
91    9 6   1.5                  136.5
166   19    8   2.375                    394.25
164   26    12  2.16666666666667    355.333333333333
146   11    6   1.83333333333333    267.666666666667
147   16    8   2                     294
201   8 3   2.66666666666667       536
164   4 2   2                      328
186   8 6   1.33333333333333       248
165   7 4   1.75                      288.75
171   10    4   2.5                   427.5
104   5 4   1.25                       130
1834 134    67  2                      3668

注意: 如果您看到表中三列的最后一行是剩余列的总数。所以当您在添加时看到最后两列TVF输出中的最后一行时,我没有得到相同的数据我得到更多。

伙计们,请帮助我,我正在努力修复我在各方面尝试的这个错误,但我无法修复它。

select 354.75+136.5+394.25+355.333333333333+267.666666666667+294+536+328+248+288.75+427.5+130=3760.750000000000

3668不是euql到3760.75(我的价值超过100)

0 个答案:

没有答案