0

我通过以下方式计算比例假期:

Count(Distinct Case When Workday NOT IN ('Saturday', 'Sunday') 
AND hours > '0' then workday END) * Holidays / 5

我想将该列中的每个值四舍五入到最接近的一半,并发现 SELECT ROUND(2.2 * 2,0) / 2 正在进行四舍五入工作。

现在我只是没有把它放在一起。据我所见, Select Round 表达式给了我一个标量,但我想让我的列中的每个值都被舍入。Round(上面的表达式, * 2.0) / 2 不起作用(所有红色下划线)。

4

2 回答 2

0

尝试单独更新?

Count(Distinct Case 
When Workday NOT IN ('Saturday', 'Sunday') 
AND hours > '0' 
then workday 
END) * Holidays / 5 as RoundThis

Update TableName
Set RoundThis = Round(RoundThis * 2.0) / 2

或者使用变量

于 2013-07-22T16:51:19.863 回答
0

假设您有一个可以编译的表达式,这应该可以解决问题:

ROUND( 2 * CAST(/*equation*/ AS DECIMAL), 0) / 2;

注意:您可能应该在除以 5 之前转换为十进制。

编辑:说明在我的系统上有效的内容:

ROUND(2 * (
  CAST(
    COUNT(Distinct Case When Workday NOT IN ('Saturday', 'Sunday')
    AND hours > '0' then workday END)
  AS DECIMAL) * Holidays / 5
), 0) / 2

这是给你一个错误还是只是错误的结果?

于 2013-07-22T17:03:33.803 回答