0

我的 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 位小数

我似乎无法获得正确的语法!

谢谢

4

4 回答 4

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 )
于 2018-04-19T14:04:59.290 回答
1

分别投射每个表达式

CAST(([Complt_Emp] + [No_Non_Complt_Emp]) as decimal(10,2)) /
CAST([No_of_Emp] as decimal(10,2)) as Total_Completed
于 2018-04-19T13:47:49.740 回答
1

我怀疑你所有的价值观都是INT。一个 int 除以一个 int 将返回一个 int。

(([Complt_Emp] + [No_Non_Complt_Emp])/ cast([No_of_Emp] as decimal(10,2)) as Total_Completed
于 2018-04-19T13:46:58.080 回答
0

尝试这个

cast((([Complt_Emp] + [No_Non_Complt_Emp])/ [No_of_Emp]) as decimal(10,2)) as Total_Completed
于 2018-04-19T13:50:10.913 回答