分裂时为什么我一直保持0

did*_*ido 0 sql sql-server casting sum sql-server-2008

我有以下代码总是导致0.00.我确定weight_score是一个实际数字.有人可以帮我格式化它,以便产生十进制数.使用SQL Server 2008,此代码位于视图中.非常感谢!

CAST(SUM(weight_score * (45/100)) as decimal(10,2)) As avg_score
Run Code Online (Sandbox Code Playgroud)

Joe*_*lli 9

45/100被隐含地视为INT除以另一个INT,这导致INT被舍入为0.为每个INT添加一个小数来解决这个问题.

CAST(SUM(weight_score * (45.0/100.0)) as decimal(10,2)) As avg_score
Run Code Online (Sandbox Code Playgroud)