数据结构如下:
[表]会员,包括会员资料
[表]部门,包括会员部门
[表]迁移,记录部门之间的成员迁移
创建成员时,我在插入时间的Migrate表中插入一行。
我可以通过以下方式查询:
SELECT name
FROM department WHERE id = (SELECT Top 1 department_id
FROM Migrate
WHERE update_time <= GETDATE()
ORDER BY update_time DESC)
获取用户部门名称。
如果成员从部门A迁移到部门B,我将插入一个新行来记录部门B id和迁移时间(现在)。
但问题是我怎样才能在特定时间获得该部门的会员名单,如'2013-05-01'
我需要一个SQL Server解决方案,感谢您的阅读。
答案 0 :(得分:0)
试试这个:
select Members.name , Departments.name from Members
inner join
(SELECT max(id) migrateid, member_id
FROM Migrate
WHERE update_time <= '2013-05-08'
group by member_id )a
on Members.id=a.member_id
inner join Migrate
on a.migrateid=Migrate.id
inner join Departments
on Departments.id=Migrate.department_id