fishyy 发表于 2007-04-23 09:06

求:SQL中的一个算法

设表中有一字段,decimal(5,1),其小数位只可能为5或0,即XXX.5或都XXX.0两种形式
现要将该字段的数值乘以0.8,再除以0.9,之后再存到该字段中,
运算后若小数位小于5,则小数位置为0,如:30.5*0.8/0.9=27.111111=27.0
运算后若小数位大于等5,则小数位置为5,如:14.5*0.8/0.9=12.88889=12.5

问在SQL的update语句中如何实现?

ivhb 发表于 2007-04-23 10:03



update tabname
set col = case when round(col*0.8/0.9) > col*0.8/0.9 then trunc(col*0.8/0.9) + 0.5
else
   trunc(col*0.8/0.9)
end
;

fishyy 发表于 2007-04-23 11:07

case 是关键字吗?
提示:
217: Column (case) not found in any table in the query.

ivhb 发表于 2007-04-23 13:17

你的informix什么版本?
这个语句不支持?
奇怪的很
贴出你的代码和运行结果来?

fishyy 发表于 2007-04-23 13:22

我的是SE版的,好像连round,trunc函数都没有

ivhb 发表于 2007-04-23 13:56

那你可以考虑使用decode,或者存储过程

fishyy 发表于 2007-04-23 17:08

谢谢,已解决
页: [1]
查看完整版本: 求:SQL中的一个算法