我的 select 子句中有以下语句;
(([Complt_Emp] + [No_Non_Complt_Emp])/ [No_of_Emp]) as Total_Completed
如何实现 CAST "cast(your_float_column as decimal(10,2))" ?我希望我的 Total_Completed 列显示 2 位小数
我似乎无法获得正确的语法!
谢谢
我的 select 子句中有以下语句;
(([Complt_Emp] + [No_Non_Complt_Emp])/ [No_of_Emp]) as Total_Completed
如何实现 CAST "cast(your_float_column as decimal(10,2))" ?我希望我的 Total_Completed 列显示 2 位小数
我似乎无法获得正确的语法!
谢谢
计算结果取决于使用的列类型。
如果你划分 int 列,你会得到 int result : 1 / 6 = 0
当您将每个值转换为十进制时,结果是:1 / 6 = 0.1666666666666
现在你想要 2 个十进制结果,所以你必须convert
/round
以前的结果才能得到期望值
请参阅小提琴以获取一些划分和投射/回合的示例:http ://sqlfiddle.com/#!18/51785/5
一个简单的技巧可以使用:
round ( 1.0 * ( [Complt_Emp] + [No_Non_Complt_Emp] ) / [No_of_Emp] , 2 )
分别投射每个表达式
CAST(([Complt_Emp] + [No_Non_Complt_Emp]) as decimal(10,2)) /
CAST([No_of_Emp] as decimal(10,2)) as Total_Completed
我怀疑你所有的价值观都是INT。一个 int 除以一个 int 将返回一个 int。
(([Complt_Emp] + [No_Non_Complt_Emp])/ cast([No_of_Emp] as decimal(10,2)) as Total_Completed
尝试这个
cast((([Complt_Emp] + [No_Non_Complt_Emp])/ [No_of_Emp]) as decimal(10,2)) as Total_Completed