为了账号安全,请及时绑定邮箱和手机立即绑定

SQL 加上ceiling函数就全部自动取整.好奇怪,我希望的结果是 sumquan 列 当 case when o时 , 是小数.

SQL 加上ceiling函数就全部自动取整.好奇怪,我希望的结果是 sumquan 列 当 case when o时 , 是小数.

森栏 2018-12-06 20:37:17
ta021 列 为 decimal(18,4) 类型 select a.ta001,a.ta002,d.cinvcode,case b.ifint when 0 then a.ta021*1.0000*d.de1/d.de2*(1.0000+d.de3/100.0000-d.de4/100.0000)  when 1 then ceiling(a.ta021*1.0000*d.de1/d.de2*(1.0000+d.de3/100.0000-d.de4/100.0000)) end as sumquan,a.ta003,a.layfrom Cmocta a left join cbom c on a.cinvcode = c.cinvcode left join cbomson d on c.bomid=d.bomid  left join ainventory b on d.cinvcode=b.cinvcodewhere a.ta003 between 'G1204-0001' and 'G1204-0001'   以上SQL语句 sumquan 全部自动取整了,好奇怪. 如果换成以下SQL语句,是会显示小数的, select b.ifint,case b.ifint when 0 then a.ta021*1.0000*d.de1/d.de2*(1.0000+d.de3/100.0000-d.de4/100.0000)  when 1 then ceiling(2) end as sumquanfrom Cmocta a left join cbom c on a.cinvcode = c.cinvcode left join cbomson d on c.bomid=d.bomid  left join ainventory b on d.cinvcode=b.cinvcodewhere a.ta003 between 'G1204-0001' and 'G1204-0001'  这个SQL语句怎么修改呢,让它该显示小数部分就显示小数部分,该取整的时候就取整呢.
查看完整描述

4 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

这个无非是SQL内置的一个函数,俗称天花板函数,print(ceiling(3.1));它会自动向上取靠近他的整数4.

查看完整回答
反对 回复 2019-01-07
?
RISEBY

TA贡献1856条经验 获得超5个赞

用switch...case操作,类似于C#中的switch...case的功能

查看完整回答
反对 回复 2019-01-07
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

不是吧,sql 中也有switch case ,真不可思议

查看完整回答
反对 回复 2019-01-07
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

@zhengyingcan: 呵呵,数据库编程嘛,也很强大的

查看完整回答
反对 回复 2019-01-07
  • 4 回答
  • 0 关注
  • 948 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信