UFN_STUDENT_CLASS
Returns a table of student class enrollment information.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CLASSID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_STUDENT_CLASS
(
@CLASSID uniqueidentifier = null
)
returns @RESULTS TABLE
(
CLASSID uniqueidentifier,
SESSIONID uniqueidentifier,
CLASSMEETINGGROUPID uniqueidentifier,
PATTERNBLOCKID uniqueidentifier,
STUDENTCOURSEID uniqueidentifier,
STATUS nvarchar(50),
STATUSCODE tinyint,
STATUSDATE date,
WITHDRAWALDATE date
)
as begin
insert into @RESULTS
select
CLASSID,
SESSIONID,
CLASSMEETINGGROUPID,
PATTERNBLOCKID,
STUDENTCOURSEID,
STUDENTCLASS.[STATUS],
STUDENTCLASS.STATUSCODE,
STUDENTCLASS.STATUSDATE,
STUDENTCLASS.WITHDRAWALDATE
from (select
STUDENTCLASSMEETINGGROUP.STUDENTCOURSEID,
t.SESSIONID,
CLASSMEETINGGROUP.ID as CLASSMEETINGGROUPID,
CLASSMEETINGGROUP.CLASSID,
CLASSMEETINGGROUP.PATTERNBLOCKID,
STUDENTCLASSMEETINGGROUP.STATUS,
STUDENTCLASSMEETINGGROUP.STATUSCODE,
STUDENTCLASSMEETINGGROUP.STATUSDATE,
t.WITHDRAWALDATE,
ROW_NUMBER() over (partition by STUDENTCLASSMEETINGGROUP.STUDENTCOURSEID, CLASSMEETINGGROUP.CLASSID order by CLASSMEETINGGROUP.startdate) ROW
from dbo.STUDENTCLASSMEETINGGROUP
inner join dbo.CLASSMEETINGGROUP on STUDENTCLASSMEETINGGROUP.CLASSMEETINGGROUPID = CLASSMEETINGGROUP.ID
inner join
(select distinct
STUDENTCLASSMEETINGGROUP.STUDENTCOURSEID,
CLASSMEETINGGROUP.CLASSID,
TERM.SESSIONID,
count(case when STUDENTCLASSMEETINGGROUP.STATUSCODE = 1 then 1 else null end) over (partition by STUDENTCLASSMEETINGGROUP.STUDENTCOURSEID, CLASSMEETINGGROUP.CLASSID) as DROPPED,
count(case when STUDENTCLASSMEETINGGROUP.STATUSCODE = 2 then 1 else null end) over (partition by STUDENTCLASSMEETINGGROUP.STUDENTCOURSEID, CLASSMEETINGGROUP.CLASSID) as WITHDRAWN,
count(case when STUDENTCLASSMEETINGGROUP.STATUSCODE = 3 then 1 else null end) over (partition by STUDENTCLASSMEETINGGROUP.STUDENTCOURSEID, CLASSMEETINGGROUP.CLASSID) as TRANSFERED,
min(TERM.WITHDRAWALDATE) over (partition by STUDENTCLASSMEETINGGROUP.STUDENTCOURSEID, CLASSMEETINGGROUP.CLASSID) WITHDRAWALDATE
from dbo.STUDENTCLASSMEETINGGROUP
inner join dbo.CLASSMEETINGGROUP on dbo.STUDENTCLASSMEETINGGROUP.CLASSMEETINGGROUPID = dbo.CLASSMEETINGGROUP.ID
inner join dbo.CLASS on CLASSMEETINGGROUP.CLASSID = CLASS.ID
inner join dbo.COURSE on CLASS.COURSEID = COURSE.ID
inner join dbo.ACADEMICYEAR on COURSE.SCHOOLID = ACADEMICYEAR.SCHOOLID
inner join dbo.SESSION on ACADEMICYEAR.ID = SESSION.ACADEMICYEARID
inner join dbo.TERM on SESSION.ID = TERM.SESSIONID
and TERM.STARTDATE = CLASSMEETINGGROUP.STARTDATE
and TERM.ENDDATE = CLASSMEETINGGROUP.ENDDATE
where (@CLASSID is null or CLASS.ID = @CLASSID)
) t
on STUDENTCLASSMEETINGGROUP.STUDENTCOURSEID = t.STUDENTCOURSEID and CLASSMEETINGGROUP.CLASSID = t.CLASSID
where (t.WITHDRAWN > 0 and STUDENTCLASSMEETINGGROUP.STATUSCODE = 2) or
(t.WITHDRAWN = 0 and t.TRANSFERED > 0 and STUDENTCLASSMEETINGGROUP.STATUSCODE = 3) or
(t.WITHDRAWN = 0 and t.TRANSFERED = 0 and t.DROPPED > 0 and STUDENTCLASSMEETINGGROUP.STATUSCODE = 3) or
(t.WITHDRAWN = 0 and t.TRANSFERED = 0 and t.DROPPED = 0)) STUDENTCLASS
where
STUDENTCLASS.ROW = 1
return
end