桌子
数据结构如下:
[表格] 会员,包括会员简介
[表格] 部门,包括会员部门
【表】迁移,记录部门间成员迁移
架构
- 成员
- 标识(整数)
- 名称(字符)
- 部门
- 标识(整数)
- 名称(字符)
- 迁移
- 标识(整数)
- member_id (int)
- 部门 ID(整数)
- update_time (datetime) - 默认值:CURRENT_DATETIME
数据示例
- 成员
- 1、汤姆
- 2、加里
- 部门
- 1、一个
- 2、乙
- 迁移
- 1, 1, 1, 2013-05-01 00:00:00 (A部门新成员于2013/05/01加入)
- 2, 2, 1, 2013-05-02 00:00:00 (A部门新成员于2013/05/02加入)
- 3、1、2、2013-05-08 00:00:00(迁移到B部门)
问题
创建成员后,我在插入时间的 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 解决方案,感谢您的阅读。