免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2602 | 回复: 6
打印 上一主题 下一主题

求:SQL中的一个算法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-23 09:06 |只看该作者 |倒序浏览
设表中有一字段,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语句中如何实现?

论坛徽章:
0
2 [报告]
发表于 2007-04-23 10:03 |只看该作者


  1. update tabname
  2. set col = case when round(col*0.8/0.9) > col*0.8/0.9 then trunc(col*0.8/0.9) + 0.5
  3. else
  4.    trunc(col*0.8/0.9)
  5. end
  6. ;
复制代码

论坛徽章:
0
3 [报告]
发表于 2007-04-23 11:07 |只看该作者
case 是关键字吗?
提示:
217: Column (case) not found in any table in the query.

论坛徽章:
0
4 [报告]
发表于 2007-04-23 13:17 |只看该作者
你的informix什么版本?
这个语句不支持?
奇怪的很
贴出你的代码和运行结果来?

论坛徽章:
0
5 [报告]
发表于 2007-04-23 13:22 |只看该作者
我的是SE版的,好像连round,trunc函数都没有

论坛徽章:
0
6 [报告]
发表于 2007-04-23 13:56 |只看该作者
那你可以考虑使用decode,或者存储过程

论坛徽章:
0
7 [报告]
发表于 2007-04-23 17:08 |只看该作者
谢谢,已解决
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP