Foxtable(狐表)用户栏目专家坐堂 → sql2008 不支持iif 怎么办?


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

主题:sql2008 不支持iif 怎么办?

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


加好友 发短信
等级:九尾狐 帖子:2193 积分:13908 威望:0 精华:2 注册:2012/2/25 10:59:00
sql2008 不支持iif 怎么办?  发帖心情 Post By:2019/3/23 14:48:00 [只看该作者]


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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:小区收费计算.table


感谢 有点蓝大师的帮助,我改写了一下,做了个小区物业收费计算器,很成功,输入起始日期就自动计算物业费
但是 当我把它移植到sql2008 数据库,才发现 sql2008 不支持 iif 语句 ,这个要怎么改写? 
Sel ect 房屋代码,合同号,月租金起始日期,月租金截止日期,月租金,(iif(月租金起始日期 > #" & e.Form.Controls("TextBox1").text & "#,iif(月租金截止日期 < #" & e.Form.Controls("TextBox2").text & "#,DateDiff('m', 月租金起始日期, 月租金截止日期),DateDiff('m', 月租金起始日期, #" & e.Form.Controls("TextBox2").text & "#)),iif(月租金截止日期 < #" & e.Form.Controls("TextBox2").text & "#,DateDiff('m', #" & e.Form.Controls("TextBox1").text & "#, 月租金截止日期),DateDiff('m', #" & e.Form.Controls("TextBox1").text & "#, #" & e.Form.Controls("TextBox2").text & "#)))+1) * 月租金 As 费用 from {表A} where (月租金起始日期 >= #" & e.Form.Controls("TextBox1").text & "# And 月租金起始日期 <= #" & e.Form.Controls("TextBox2").text & "#) Or (月租金截止日期 >= #" & e.Form.Controls("TextBox1").text & "# And 月租金截止日期 <= #" & e.Form.Controls("TextBox2").text & "#) GROUP BY 房屋代码,合同号,月租金起始日期,月租金截止日期,月租金
[此贴子已经被作者于2019/3/23 14:50:52编辑过]

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


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


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


加好友 发短信
等级:九尾狐 帖子:2193 积分:13908 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2019/3/23 15:11:00 [只看该作者]

case when 遇到第一个满足条的记录, 后面的就忽视了,结果不对

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


加好友 发短信
等级:九尾狐 帖子:2193 积分:13908 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2019/3/23 15:18:00 [只看该作者]

这是我昨晚写的:
s elect case 
when ('2019-02-01' BETWEEN 月租金起始日期  and 月租金截止日期) and '2019-10-31' > 月租金截止日期 then sum(月租金 * (datediff(month,'2019-02-01',月租金截止日期)+1))  
when ('2019-02-01< 月租金起始日期 and '2019-10-31' > 月租金截止日期) then sum(月租金 * (datediff(month,月租金起始日期,月租金截止日期)+1)) 
when  ('2019-10-31' BETWEEN 月租金起始日期  and 月租金截止日期) and '2019-02-01' < 月租金起始日期 then  sum(月租金 * (datediff(month,月租金起始日期,'2019-10-31')+1))  end  from {合同月租金}  where 房屋代码='405304' group by 月租金起始日期 ,月租金截止日期

结果不对
[此贴子已经被作者于2019/3/23 15:19:06编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2193 积分:13908 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2019/3/23 15:28:00 [只看该作者]

哦  我明白了  谢谢大师  
用  SQLGroupTableBuilder 改写



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


加好友 发短信
等级:超级版主 帖子:110333 积分:561507 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/3/23 16:42:00 [只看该作者]

select 房屋代码, sum(租金) as 租金 from (selec房屋代码, case 
when ('2019-02-01' BETWEEN 月租金起始日期  and 月租金截止日期) and '2019-10-31' > 月租金截止日期 then (月租金 * (datediff(month,'2019-02-01',月租金截止日期)+1))  
when ('2019-02-01'< 月租金起始日期 and '2019-10-31' > 月租金截止日期) then (月租金 * (datediff(month,月租金起始日期,月租金截止日期)+1)) 
when  ('2019-10-31' BETWEEN 月租金起始日期  and 月租金截止日期) and '2019-02-01' < 月租金起始日期 then  (月租金 * (datediff(month,月租金起始日期,'2019-10-31')+1)) else (月租金 * (datediff(month,'2019-02-01','2019-10-31')+1))  end as  租金 from {合同月租金}  where 房屋代码='405304' and  (月租金起始日期 >= #2019-02-01# and 月租金起始日期 <= #2019-10-31#) or (截月租金截止日期 >= #2019-02-01# and 月租金截止日期 <= #2019-10-31#) ) as a group by 房屋代码



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


加好友 发短信
等级:九尾狐 帖子:2193 积分:13908 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2019/3/23 19:27:00 [只看该作者]

正是我想要的效果! 非常感谢 有点蓝大师

 回到顶部