日期:2014-05-18  浏览次数:20429 次

列为decimal类型的时候偏偏没有小数部分,为float类型的时候才有小数部分
select a.ta021*1.0000*d.de1/d.de2*(1.0000+d.de3/100.0000-d.de4/100.0000) as sumquan
from 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.cinvcode
where a.ta003 between @socode1 and @socode2 AND a.lay = @Level-1
以上代码,当a.ta021 为 decimal(18,4) 的时候,sumquan 的值为 38.0000, 当a.ta021 为 float 的时候,sumquan 的值为 37.9011 
现在问题是 a.ta021 一定是 decimal(18,4) , 但又想值为37.9011 , SQL语句怎么写呢

------解决方案--------------------
ceiling 这个函数引起的

同一个字段显示整数和小数,需要转为字符类型
------解决方案--------------------
CEILING函数用于返回大于或等于指定表达式的最小整数
------解决方案--------------------
探讨

引用:

ceiling 这个函数引起的

同一个字段显示整数和小数,需要转为字符类型

只是ceiling只是case when 一种可能性,但是现在变得两种可能 都使用了ceiling 函数, 好像不符合case when的逻辑呢