加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

这个SQL Server查询分区计算有什么问题?

发布时间:2020-12-12 06:21:35 所属栏目:MsSql教程 来源:网络整理
导读:我在SQL Server 2008 R2数据库上有这个表结构: CREATE TABLE FormTest( clientid char(10),DateSelected date,A int,B int,C int) 我在表格FormTest中填写了以下信息 clientid DateSelected A B Cx1 2006-06-09 65150 4921 1x2 2006-05-05 155926 69092 1x3
我在SQL Server 2008 R2数据库上有这个表结构:
CREATE TABLE FormTest
(   
clientid char(10),DateSelected date,A int,B int,C int
)

我在表格FormTest中填写了以下信息

clientid        DateSelected      A       B     C
x1              2006-06-09     65150    4921    1
x2              2006-05-05     155926   69092   1
x3              2006-01-20     95603    156892  1
x4              2006-01-20     30704    164741  1
x4              2006-02-03     65150    174834  1
x5              2006-04-28     59629    4921    1
x6              2006-01-27     30704    162356  1
x7              2006-06-30     65150    4921    1
x8              2006-07-10     65150    4921    1

最后,我运行这个SQL查询:

SELECT clientid,(((a+ b + c) / 3) / 216647 * 10) AS Formula1 
    From FormTest

但后来我得到了这些结果:

clientid        Formula1      
x1              0
x2              0
x3              0
x4              0
x4              0
x5              0
x6              0
x7              0
x8              0

谁能告诉我我做错了什么?

解决方法

这是因为你正在进行整数除法.您应该将其中一个操作数转换为float或decimal(取决于您正在进行的计算的精度和目的),使用类似于:
((CAST((a+ b + c) AS FLOAT) / 3) / 216647 * 10)

或者可能:

(((a+ b + c) / 3.0) / 216647.0 * 10)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读