日期:2014-05-19  浏览次数:20722 次

这样的查询在Access中该如何实现?
例:用户表[users]:username-用户名,startdate-开户日期,enddate-销户日期,state-用户状态.
说明:   1).username为主键,且被其它表作为外键引用
            2).state=1   代表用户状态正常;state=2   代表用户已注销
            3).enddate   不为空且   state=1   的记录表示该用户曾经已注销现在又重新开户.
问题:查询用户记录,要求业主状态已注销的显示销户日期,而业主状态正常的不能显示销户日期(将重新开户的销户日期屏蔽).
假设表中有如下记录:
        username startdate enddate state
            aaa 2006-1-1       1
            bbb               2006-3-4                 2006-12-20                 2
            ccc               2006-10-7               2006-4-3                     1
需要得到如下结果:
        username startdate enddate state
            aaa 2006-1-1                           1
            bbb               2006-3-4                 2006-12-20                 2
            ccc               2006-10-7                                                   1
我仅知道在MSSQL中可以这样查询得出结果:   select   username,startdate,enddate   =   case   state   when   1   then   null   when   2   then   enddate   end,state   from   users
但是在Access中该如何实现呢?请高手帮忙!
(前提:由于username被外表引用所以不能删除后重新添加记录.)


------解决方案--------------------
select [username],startdate,iif(state=1,null,enddate) as enddate1,state from users