複数の「With」ステートメントを組み込んだ関数を作成しようとしています。
私の元のクエリは次のとおりです。
WITH EmpCount as
(
SELECT job.EmployeeID, assign.PropertyID FROM EmployeeJobstatus job
JOIN Assignment assign ON job.JobID = assign.ID GROUP by job.EmployeeID,
assign.PropertyID
),
NoDup as
(
SELECT EmployeeID, Count(employeeID) as NO from EmpCount
Group by EmployeeID HAVING count(Employeeid) > 1
)
SELECT prop.Name, job.EmployeeID, Emp.EmpID, Emp.Name
from EmployeeJobStatus job
JOIN Assignment assign ON assign.id = job.jobid
JOIN Property prop ON prop.ID = assign.PropertyID
JOIN Employee emp on emp.ID = job.EmployeeID
WHERE EmployeeID IN (SELECT EmployeeID from NoDup)
GROUP By prop.Name, EmployeeID, emp.EmpID,Emp.Name
Order BY EmployeeID
これは以下を返します:
Name EmployeeID EmpID Name
Property 1 23 1286333 LastNameRemoved1, Rachel A
Property 2 23 1286333 LastNameRemoved1, Rachel A
Property 2 76 1268329 LastNameRemoved2, Tamer A
Property 1 76 1268329 LastNameRemoved2, Tamer A
Property 3 135 1411933 LastNameRemoved3, Sarah E
Property 1 135 1411933 LastNameRemoved2, Sarah E
私の関数は、EmployeeJobStatus の StartDate と EndDate のフィールドを利用して、クロス プロパティであるかどうかに応じて「Y」または「N」を返す必要があります。
私は自分の機能を開始したばかりで、次に何をすべきかわからない.
CREATE function dbo.IsEmployeeCrossPropertyOnDate
(@EmpID int, @AsOfDate datetime)
RETURNS INT AS
どんな助け、または正しい方向への微調整も大歓迎です。ありがとうございました。