delcare @time datetime
set @time = '....' -- 此处输入时间select a.部门编号, a.部门名称, b.员工编号, c.职务名称
from 部门履历表 a
inner join 员工履历表 b on a.部门编号 = b.部门编号
inner join 职务履历表 c on c.职务编号 = b.职务编号
where a.部门开始时间 >= @time and a.部门结束时间 <=@time
      and b.调换部门时间 <= @time and b.区分 = 0
没进行测试, 不好意思.
(另外, 你的"职务履历表"里怎么出现两次ZW01呀, 是不是打错了??)