| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 989 人关注过本帖
标题:使用iif()的一点困惑
取消只看楼主 加入收藏
phoenix_leon
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2015-10-30
收藏
 问题点数:0 回复次数:1 
使用iif()的一点困惑
在使用select调用iif()发现一个问题,百思不得其解,上来请教大家。
描述如下:
select a.tt01,a.tt02,b.tt03,iif(b.tt03=0,-1,(a.tt01+a.tt02)/(b.tt03/10000)) as tt04 where 条件 form a,b
以上a,b表中调用的字段都是正常的数值型,但在生成的tt04中就会有生成“**”,用modi stru查看临时表结构,发现tt04的结构为N(2,0)所以仅有条件满足b.tt03=0和<>0但(a.tt01+a.tt02)/(b.tt03/10000)的计算结果小于100时才能正常显示,计算结果>=100的都显示“**”。

但如果先通过将(a.tt01+a.tt02)as t1与(b.tt03/10000) as t2生成一个临时表temp,再用一个select iif(b.tt03=0,-1,t1/t2) as tt04 where 条件 from temp,b 则能全部正常计算和显示。

想了半天也不知道问题在哪里

[此贴子已经被作者于2015-11-11 17:23编辑过]

搜索更多相关主题的帖子: where 
2015-11-11 17:20
phoenix_leon
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2015-10-30
收藏
得分:0 
谢谢楼上的两位,我也通过修改数据,发现了你们提的思路,但为什么我说的第二种模式就没有这个情况呢,同样是=0显示-1,<>0就可以完整显示计算结果。
2015-11-12 08:22
快速回复:使用iif()的一点困惑
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015506 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved