结合计数和回合

时间:2013-07-22 16:41:52

标签: sql tsql count rounding

我按比例计算比例假期:

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不起作用(将所有内容加下划线)。

2 个答案:

答案 0 :(得分: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

或使用变量

答案 1 :(得分: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

这会给您一个错误或错误的结果吗?