従業員向けのテーブルと、現在のアクティビティと過去のアクティビティのテーブルの2つがあります。タイプに基づいて次のアクティビティの従業員を選択する関数/クエリが必要です。ここでのサンプルデータは、次のとおりです。従業員ベースの可用性の選択クエリSQL Server 2012
表従業員
EmployeesID UserName Type Available
1 Bill Clerical 1
2 Ann Clerical 1
3 John Technical 1
4 Jack Technical 0
5 Mary Clerical 0
6 Sam Technical 0
7 Mark Clerical 1
8 Andy Clerical 1
9 Rick Clerical 1
10 Nancy Clerical 1
活動
ActivityID EmployeesID Status Task_Datetime
101 2 Complete 6/11/2016 10:00
102 1 Complete 6/11/2016 10:12
103 3 Complete 6/11/2016 10:24
104 4 Complete 6/11/2016 10:36
105 7 Complete 6/11/2016 10:48
106 6 Complete 6/11/2016 11:00
107 5 Complete 6/11/2016 11:12
108 8 Complete 6/11/2016 11:24
109 10 Complete 6/11/2016 11:36
110 9 Complete 6/11/2016 11:48
111 5 Complete 6/11/2016 12:00
112 8 Complete 6/11/2016 12:12
113 3 Complete 6/11/2016 12:24
114 4 Complete 6/11/2016 12:36
115 1 Complete 6/11/2016 12:48
116 6 Complete 6/11/2016 13:00
117 7 Complete 6/11/2016 13:12
118 2 Complete 6/11/2016 13:24
119 9 Complete 6/11/2016 13:36
120 10 In Progress 6/11/2016 13:48
121 1 In Progress 6/11/2016 14:00
122 2 Complete 6/11/2016 14:12
123 3 Complete 6/11/2016 14:24
124 4 Complete 6/11/2016 14:36
125 6 In Progress 6/11/2016 14:48
すべてが進行中である場合、進行 に活動をせずに利用従業員のマッチングタイプに割り当てる場合は0 を返す必要があります複数の利用可能なものが割り当てられたものに割り当てられます。
したがって、次の割り当てが事務的である場合、進行中のために1または10を取らないでください。 しかし、最後に最初に完了した2,5,7,8,9(他の占有されていないもの)利用できません)。
次の割り当てが技術的な場合は、Johnに、johnが利用できない場合はnullを返す必要があります。
は、これまでのところ、このような何かを書いた:
function: NextEmployee('Clerical')
Select EmployeeID from Employees e , Activities a where e.available= 1 and e.type='Clerical' and
質問を明確にしてください。 Employees.AvailableとActivities.Statusの列の意味についても説明してください。上記のデータに基づいてサンプル結果テーブルを提供します。 – Alex
employees.availableは、従業員が選択可能であることを意味します。 Activities.statusは完了することができます。これは、従業員がアクティビティを完了して選択できること、またはステータスが進行中であることを意味します。これは、従業員が何かに取り組んでいることを意味します。従業員を選択可能にするには、employees.available = 1およびactivities.status <> 'In Progress'を選択します。表の下のテキストは、期待される結果の例を示しています。 –