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

小数的精度问题
有两张表,packing和invoice,要根据invoice.fc的值来半段精度,若invoice.fc = “JPY”则packing.price取整数,否则保留两位(四舍五入)

select case when invoice.fc = 'JPY' then floor(packing.price) else round(packing.price,2) end as price from packing inner join invoice on....以上查询出来的结果还是保留小数点后4位,只起到了四舍五入的效果,求高人指点,或有什么好的方法没有?谢谢先了~~

------解决方案--------------------
when invoice.fc = 'JPY' then floor(packing.price) 
else cast(round(packing.price,2) as numeric(18,2)) end
整数是出不来的,不要问为什么,自己去想
------解决方案--------------------
case when invoice.fc = 'JPY' then floor(packing.price) else cast(packing.price as dec(18,2)) end
------解决方案--------------------
探讨

我也想到了转换成字符型,但是对数据本身会不会有什么影响啊,而且对查询的效率也应该会有影响吧