Foxtable(狐表)用户栏目专家坐堂 → 关于SQL语句中ROUND 的用法


  共有2344人关注过本帖树形打印复制链接

主题:关于SQL语句中ROUND 的用法

帅哥哟,离线,有人找我吗?
ap9709130
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
关于SQL语句中ROUND 的用法  发帖心情 Post By:2019/3/31 14:18:00 [只看该作者]

 老师

     我今天在做项目时,遇到一个很奇怪的问题,SQL语句如下 :
 s e le ct (se le ct Sum(产品数量*IIF(产品成本价 > 0,产品成本价,产品piao面价)) from {订单明细表} where 订单编号 = {订单主表}._Identify) as 总金额 f rom {订单主表} where _Identify = 24723

   在执行SQL中可以得到结果:30937.545 。 我希望得到的结果是:30937.55 于是我改了SQL 如下:

se le ct ROUND((s ele ct Sum(产品数量*IIF(产品成本价 > 0,产品成本价,产品piao面价)) from {订单明细表} where 订单编号 = {订单主表}._Identify),2) as 总金额 from {订单主表} where _Identify = 24723

   可是结果是:30937.54  怎么样写才能得到: 30937.55 ?  我改了以下几种,结果都是:30937.54
1.s ele ct (se lec t ROUND(Sum(产品数量*IIF(产品成本价 > 0,产品成本价,产品piao面价)),2) from {订单明细表} where 订单编号 = {订单主表}._Identify) as 总金额 from {订单主表} where _Identify = 24723
2.s ele ct (se le ct Sum(ROUND(产品数量*IIF(产品成本价 > 0,产品成本价,产品piao面价),2)) from {订单明细表} where 订单编号 = {订单主表}._Identify) as 总金额 from {订单主表} where _Identify = 24723

希望老师指点。多谢!



 回到顶部
帅哥哟,离线,有人找我吗?
ap9709130
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2019/3/31 15:32:00 [只看该作者]

请看附件图片。谁能告诉我,怎么会这样?


图片点击可在新窗口打开查看此主题相关图片如下:round.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2019/3/31 15:33:06编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/1 10:55:00 [只看该作者]

那你试试用format函数,如

 

format(30937.545, '0.00')


 回到顶部
帅哥哟,离线,有人找我吗?
ap9709130
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2019/4/1 12:34:00 [只看该作者]

 老师,

这是一个很大的问题,一直没人反应吗? 做财务设计时,一分钱 是很大的问题.

是什么原因,怎么会这样的呢?

 回到顶部
帅哥哟,离线,有人找我吗?
ap9709130
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2019/4/1 12:38:00 [只看该作者]

有点甜老师

测试 format(30937.545, '0.00') 是可以的.


图片点击可在新窗口打开查看此主题相关图片如下:round.png
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/1 13:01:00 [只看该作者]

 

round函数执行的是【四舍六入五成双】的规则,不是【四舍五入】。其实,前者更符合实际需求。

 

 

[此贴子已经被作者于2019/4/1 13:01:20编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
ap9709130
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2019/4/1 13:01:00 [只看该作者]

但是这里有个问题,变成的不是数字,还要转换过来.

我还发现一个问题,如果用Round(参数+0.0000000001,2) ,就可以了.和 fox的 Round2 函数一样. 有这种问题.

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/1 13:02:00 [只看该作者]

round函数执行的是【四舍六入五成双】的规则,不是【四舍五入】。其实,前者更符合实际需求。

 回到顶部
帅哥哟,离线,有人找我吗?
ap9709130
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2019/4/2 21:48:00 [只看该作者]

甜老师

 

我发现是数字就没有问题,可以4舍五入,怎么会这样,请看图:

 


图片点击可在新窗口打开查看此主题相关图片如下:aa.png
图片点击可在新窗口打开查看

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107729 积分:547978 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/2 21:59:00 [只看该作者]

这个无解的。数据库设计就是如此。

如果有特殊需求,那就完整取值到程序里再处理

 回到顶部