テーブル
次のようなデータ構造:
[表] メンバー、プロフィールなど
【表】メンバーの部署を含む部署
[テーブル] 移行、部門間のメンバー移行を記録
スキーマ
- メンバー
- id (整数)
- 名前 (文字)
- 部署
- id (整数)
- 名前 (文字)
- 移行する
- id (整数)
- member_id (整数)
- department_id (整数)
- update_time (日時) - デフォルト: CURRENT_DATETIME
データ例
- メンバー
- 1、トム
- 2、ゲイリー
- デパートメント
- 1、あ
- 2、B
- 移行する
- 1, 1, 1, 2013-05-01 00:00:00 (2013/05/01 新入部員 A 部)
- 2, 2, 1, 2013-05-02 00:00:00 (2013/05/02 新入部員 A 部)
- 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 年 5 月 1 日」のような特定の時間に部門のメンバー リストを取得するにはどうすればよいかということです。
SQL Server ソリューションが必要です。お読みいただきありがとうございます。