使用Access的查询视图,其SQL非常不优雅:
SELECT a.取证时间, IIf(DateAdd("yyyy",2,a.取证时间)>Date(),"",DateAdd("yyyy",2,a.取证时间)) AS 第一次复审,
IIf(IsNull(a.上一次复审),"",DateAdd("yyyy",Int(DateDiff("m",a.取证时间,Date())/24)*2,a.取证时间)) AS 上一次复审,
IIf(IsNull(a.上一次复审),DateAdd("yyyy",2,a.取证时间),DateAdd("yyyy",Int(DateDiff("m",a.取证时间,Date())/24)*2+2,a.取证时间)) AS 下一次复审
FROM 表1 AS a
如果允许使用VBA例程、进行逐笔赋值,可以让代码优雅些。
使用Access的查询视图,其SQL非常不优雅:
SELECT a.取证时间, IIf(DateAdd("yyyy",2,a.取证时间)>Date(),"",DateAdd("yyyy",2,a.取证时间)) AS 第一次复审,
IIf(IsNull(a.上一次复审),"",DateAdd("yyyy",Int(DateDiff("m",a.取证时间,Date())/24)*2,a.取证时间)) AS 上一次复审,
IIf(IsNull(a.上一次复审),DateAdd("yyyy",2,a.取证时间),DateAdd("yyyy",Int(DateDiff("m",a.取证时间,Date())/24)*2+2,a.取证时间)) AS 下一次复审
FROM 表1 AS a
如果允许使用VBA例程、进行逐笔赋值,可以让代码优雅些。
我就是改了红字部份 不然上一次复审一列为空
SELECT a.取证时间, IIf(DateAdd("yyyy",2,a.取证时间)>Date(),"",DateAdd("yyyy",2,a.取证时间)) AS 第一次复审,
IIf(a.第一次复审,"",DateAdd("yyyy",(Int(DateDiff("m",a.取证时间,Date())/24))*2,a.取证时间)) AS 上一次复审,
IIf(a.上一次复审,DateAdd("yyyy",2,a.取证时间),DateAdd("yyyy",Int(DateDiff("m",a.取证时间,Date())/24)*2+2,a.取证时间)) AS 下一次复审
FROM 表1 AS a;