以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 想把SQL下面语句中,保留二位小数,老师应该怎么写? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=135107) |
||||
-- 作者:xxfoxtable -- 发布时间:2019/5/17 8:13:00 -- 想把SQL下面语句中,保留二位小数,老师应该怎么写? (case when b.金额 is null then 0 else b.金额 end)-(case when b.实收金额 is null then 0 else b.实收金额 end)-(case when b.优惠金额 is null then 0 else b.优惠金额 end)) as 余额, |
||||
-- 作者:有点甜 -- 发布时间:2019/5/17 9:19:00 -- round(你的语句, 2) as 余额
https://www.cnblogs.com/yeagen/archive/2012/08/27/2658659.html
|
||||
-- 作者:xxfoxtable -- 发布时间:2019/5/17 9:30:00 -- round((case when b.金额 is null then 0 else b.金额 end)-(case when b.实收金额 is null then 0 else b.实收金额 end)-(case when b.优惠金额 is null then 0 else b.优惠金额 end)),2) as 余额 round(case when b.金额 is null then 0 else b.金额 end)-(case when b.实收金额 is null then 0 else b.实收金额 end)-(case when b.优惠金额 is null then 0 else b.优惠金额 end),2) as 余额 这二种写法都不行 |
||||
-- 作者:有点甜 -- 发布时间:2019/5/17 9:41:00 -- 1、不写round的时候,能否得到数值?
2、把代码在sqlserver数据库那里测试,得到什么?报什么错? |
||||
-- 作者:xxfoxtable -- 发布时间:2019/5/17 10:07:00 -- 能得到数值,就是位数太多,在sqlserver数据库那里测试,就显示0,什么错误也不报 |
||||
-- 作者:有点甜 -- 发布时间:2019/5/17 11:03:00 -- 参考这里写
https://www.cnblogs.com/yeagen/archive/2012/08/27/2658659.html
[此贴子已经被作者于2019/5/17 11:02:57编辑过]
|
||||
-- 作者:xxfoxtable -- 发布时间:2019/5/17 11:20:00 -- cast(round((case when b.金额 is null then 0 else 金额 end)-(case when b.实收金额 is null then 0 else 实收金额 end)-(case when b.优惠金额 is null then 0 else b.优惠金额 end),2) as numeric(20,2)) as 余额 我是这样写的,结果还是0 |
||||
-- 作者:有点甜 -- 发布时间:2019/5/17 12:24:00 -- round((case when b.金额 is null then 0.0 else 金额 end)-(case when b.实收金额 is null then 0.0 else 实收金额 end)-(case when b.优惠金额 is null then 0.0 else b.优惠金额 end),2) as 余额
如果还有问题,实例发上来测试 |
||||
-- 作者:xxfoxtable -- 发布时间:2019/5/17 12:30:00 --
语句在包里的文本文件里,示例数据是第16 17行 |
||||
-- 作者:有点甜 -- 发布时间:2019/5/17 15:30:00 -- 1、语句没问题,数据也没有问题。你金额列的类型是整型,从单价*数量过来的数据本身就已经是错了的啊。
2、请重新计算金额列的值,再核对你的结果。 |