case when语句转IIF,因为access不识别

来源:百度知道 编辑:UC知道 时间:2024/05/15 19:57:48
create table 合同期内利息表(合同期内利息 money)

insert into 合同期内利息表
select
case when '2005-8-30' < 合同结束日期 and 合同结束日期 < '2008-12-31' and 合同开始时间 < '2005-8-30'
then datediff(month,'2005-8-30',合同结束日期)*利率*本金
when '2005-9-1' < 合同结束日期 and 合同结束日期 < '2008-12-31' and '2005-9-1' < 合同开始时间 and 合同开始时间 < '2008-12-31'
then datediff(month,合同开始时间,合同结束日期)*利率*本金
when 合同结束日期 > '2008-12-31' and 合同开始时间 < '2005-9-1'
then datediff(month,'2005-9-1','2008-12-31')*利率*本金
when 合同结束日期 > '2008-12-31' and 合同开始时间 > '2005-9-1' and 合同开始时间 < '2008-12-31'
then datediff(month,合同开始时间,'2008-12-31')*利率*本金
else '0' end as '正常利息'
from dbo.sheet1$

复杂了点,但是格式比较单一,如何将多条件的case when 转化为access 可以识别的IIF语句。

读懂你的意图足足花了10分钟,是不是从2005-08-31至2008-12-31日期段计息啊?
insert into 合同期内利息表
Select iff(a<0,0,a) as 正常利息 from
(SELECT datediff('m',iif(合同开始时间<#2005-08-31#,#2005-08-31#,合同开始时间), iif(合同结束日期>#2008-12-31#,#2008-12-31#,合同结束日期))*利率*本金 as a
from dbo.sheet1$)