我按比例计算比例假期:
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不起作用(将所有内容加下划线)。
答案 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
这会给您一个错误或错误的结果吗?