-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCreate View uvAllStudentAssessmentResults
237 lines (198 loc) · 9.6 KB
/
Create View uvAllStudentAssessmentResults
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
USE [Synergetic_AUSA_WOODCROFT_PRD]
GO
/****** Object: View [woodcroft].[uvAllStudentAssessmentResults] Script Date: 14/09/2021 8:27:06 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [woodcroft].[uvAllStudentAssessmentResults]
WITH SCHEMABINDING
AS (
select
StudentYears.FileYear,
Community.ID,
Community.Given1,
Community.Given2,
Community.Preferred,
Community.Surname,
Community.Initials,
case
when StudentYears.YearLevel = 0 then 'Reception'
when StudentYears.YearLevel >= 1 and StudentYears.YearLevel <= 5 then 'Junior'
when StudentYears.YearLevel >= 6 and StudentYears.YearLevel <= 9 then 'Middle'
when StudentYears.YearLevel >= 10 then 'Senior'
end as SchoolLevel,
StudentYears.Form,
StudentYears.House,
StudentYears.IBFlag,
StudentYears.LeavingDate,
StudentYears.ReturningDate,
StudentYears.Status as StudentStatus,
StudentYears.Tutor as TutorGroupCode,
luTutor.Description as TutorGroup,
luTutor.TutorName,
StudentYears.YearLevel as StudentYearLevel,
StudentClasses.FileType,
StudentClasses.FileSemester,
/* [2021.09.09 selby_b] If Term is not available from the ResultGroup,
we attempt to infer it based on the ClassStartDate. */
CASE
WHEN SubjectAssessmentAreas.ResultGroup like '$T_W%'
THEN SUBSTRING(SubjectAssessmentAreas.ResultGroup, 3, 1)
WHEN DATEPART(MONTH, StudentClasses.StartDate) <= 3 then 1
WHEN DATEPART(MONTH, StudentClasses.StartDate) <= 6 then 2
WHEN DATEPART(MONTH, StudentClasses.StartDate) <= 9 then 3
WHEN DATEPART(MONTH, StudentClasses.StartDate) <= 12 then 4
ELSE 'N/A'
END AS Term,
StudentClasses.ClassCode,
StudentClasses.AssessableFlag,
StudentClasses.StartDate as ClassStartDate,
StudentClasses.StopDate as ClassStopDate,
FileSemesters.StartDate as SemesterStartDate,
FileSemesters.EndDate as SemesterEndDate,
FileSemesters.SystemCurrentFlag as CurrentSemesterFlag,
SubjectClasses.Description as ClassDescription,
SubjectClasses.AssessmentCode,
SubjectClasses.LearningAreaCode,
SubjectClasses.NormalYearLevel as ClassNormalYearLevel,
luYearLevel.YearLevelSort as ClassNormalYearLevelSort,
LearningAreas.Description as LearningAreaDescription,
uSubjectSummary.Summary as SubjectSummary,
SubjectClassStaff.StaffID,
CommunityTeacher.Title AS StaffTitle,
CommunityTeacher.Preferred AS StaffPreferred,
CommunityTeacher.Initials as StaffInitials,
CommunityTeacher.Surname AS StaffSurname,
SubjectAssessmentAreas.ResultGroup,
SubjectAssessmentAreas.Heading as AssessmentAreaHeading,
SubjectAssessmentAreas.AreaSeq as AssessmentAreaSeq,
SubjectAssessmentAreas.ResultType,
/* ==================================================================================== */
/* These columns are only populated for students being assessed under the MYP code. */
/* ==================================================================================== */
CASE
WHEN SubjectClasses.AssessmentCode LIKE '$MYP%'
THEN uMYPFacultyDescriptions.MYPHeading
ELSE NULL
END AS MYPHeading,
CASE
WHEN SubjectClasses.AssessmentCode = '$MYP'
THEN uMYPCriteriaDescriptions.MYPCriteriaDesc
WHEN SubjectClasses.AssessmentCode = '$MYPCriteria'
THEN MYPCriteriaOnlyDescriptions.MYPCriteriaDesc
ELSE NULL
END AS MYPCriteriaDesc,
/* ==================================================================================== */
/* This column is only populated for students being assessed under the DP code. */
/* ie. International Baccalaureate students. */
/* ==================================================================================== */
CASE
WHEN SubjectClasses.AssessmentCode like '$DP%'
THEN uMYPFacultyDescriptions.MYPHeading
ELSE NULL
END AS IBHeading,
/* ==================================================================================== */
/* ==================================================================================== */
StudentAssessmentResults.Result,
/* Tutor group participation values are extracted from another table which returns
multiple rows, and concatenated. This is the output of the TGP ASP.NET web application. */
case when StudentYears.YearLevel in (7, 8, 9, 10, 11, 12)
and SubjectClasses.LearningAreaCode = 'TG'
then
STUFF(
(select ', ' + Activity
from woodcroft.uTutorGroupParticipation as TGP
LEFT JOIN woodcroft.uTutorGroupActivities as TGA
on TGP.FileYear = TGA.FileYear
and TGP.ActivitySeq = TGA.Seq
WHERE TGP.FileYear = StudentYears.FileYear
AND StudentYears.ID = TGP.Id
FOR XML PATH('')),
1, 2, '') + '.'
else
StudentAssessmentComments.Comment
end as AssessmentComment
from dbo.StudentYears
LEFT JOIN dbo.Community
on StudentYears.ID = Community.ID
LEFT JOIN dbo.StudentClasses
on Community.ID = StudentClasses.ID
and StudentYears.FileYear = StudentClasses.FileYear
LEFT JOIN dbo.SubjectClasses
on StudentYears.FileYear = SubjectClasses.FileYear
and StudentClasses.FileSemester = SubjectClasses.FileSemester
and StudentClasses.FileType = SubjectClasses.FileType
and StudentClasses.ClassCode = SubjectClasses.ClassCode
and StudentClasses.ClassCampus = SubjectClasses.ClassCampus
LEFT JOIN dbo.uSubjectSummary
ON StudentYears.FileYear = uSubjectSummary.FileYear
AND StudentClasses.FileSemester = uSubjectSummary.FileSemester
AND SubjectClasses.Description = uSubjectSummary.ClassDescription
AND
-- Simplify assessment codes to enable match
case
when SubjectClasses.AssessmentCode like '$MYP%' then '$MYP'
when SubjectClasses.AssessmentCode like '$SACE%' then '$SACE'
when SubjectClasses.AssessmentCode like '$DP%' then '$DP'
else SubjectClasses.AssessmentCode
end = uSubjectSummary.AssessmentCode
AND SubjectClasses.NormalYearLevel = uSubjectSummary.YearLevel
LEFT JOIN dbo.SubjectClassStaff
ON StudentClasses.FileType = SubjectClassStaff.FileType
AND SubjectClasses.FileYear = SubjectClassStaff.FileYear
AND SubjectClasses.FileSemester = SubjectClassStaff.FileSemester
AND StudentClasses.ClassCampus = SubjectClassStaff.ClassCampus
AND SubjectClasses.ClassCode = SubjectClassStaff.ClassCode
AND SubjectClasses.SubjectClassesSeq = SubjectClassStaff.SubjectClassesSeq
/* May be multiple staff members for each class, we are only interested in primary one. */
AND SubjectClassStaff.StaffSeq = 1
LEFT JOIN dbo.Community AS CommunityTeacher
ON SubjectClassStaff.StaffID = CommunityTeacher.ID
LEFT JOIN dbo.LearningAreas
on SubjectClasses.FileType = LearningAreas.FileType
and SubjectClasses.LearningAreaCode = LearningAreas.LearningAreaCode
LEFT JOIN dbo.SubjectAssessmentAreas
on StudentYears.FileYear = SubjectAssessmentAreas.FileYear
and StudentClasses.FileSemester = SubjectAssessmentAreas.FileSemester
and StudentClasses.FileType = SubjectAssessmentAreas.FileType
and SubjectClasses.AssessmentCode = SubjectAssessmentAreas.AssessmentCode
and StudentClasses.ClassCampus = SubjectAssessmentAreas.ClassCampus
LEFT JOIN dbo.StudentAssessmentResults
on Community.id = StudentAssessmentResults.id
and StudentYears.FileYear = StudentAssessmentResults.FileYear
and StudentClasses.FileSemester = StudentAssessmentResults.FileSemester
and StudentClasses.FileType = StudentAssessmentResults.FileType
and SubjectClasses.ClassCode = StudentAssessmentResults.ClassCode
and StudentClasses.ClassCampus = StudentAssessmentResults.ClassCampus
and SubjectAssessmentAreas.AreaSeq = StudentAssessmentresults.AreaSeq
LEFT JOIN dbo.StudentAssessmentComments
ON StudentYears.FileYear = StudentAssessmentComments.FileYear
AND StudentClasses.FileSemester = StudentAssessmentComments.FileSemester
AND Community.ID = StudentAssessmentComments.ID
AND StudentClasses.ClassCode = StudentAssessmentComments.ClassCode
/* ================================================================================ */
/* The MYP Assessment Areas require additional tables. */
LEFT JOIN dbo.uMYPFacultyDescriptions
on SubjectClasses.LearningAreaCode = uMYPFacultyDescriptions.LearningAreaCode
LEFT JOIN dbo.uMYPCriteriaDescriptions
on uMYPFacultyDescriptions.MYPHeading = uMYPCriteriaDescriptions.MYPHeading
and SubjectAssessmentAreas.AreaSeq - 5 = uMYPCriteriaDescriptions.CriteriaSequence
/* The $MYPCriteria assessment code has different assessment area sequence numbers. */
LEFT JOIN dbo.uMYPCriteriaDescriptions AS MYPCriteriaOnlyDescriptions
on uMYPFacultyDescriptions.MYPHeading = MYPCriteriaOnlyDescriptions.MYPHeading
and SubjectAssessmentAreas.AreaSeq = MYPCriteriaOnlyDescriptions.CriteriaSequence
/* ================================================================================ */
LEFT JOIN dbo.FileSemesters
ON StudentClasses.FileYear = FileSemesters.FileYear
AND StudentClasses.FileSemester = FileSemesters.FileSemester
LEFT JOIN dbo.luTutor
on StudentYears.Tutor = luTutor.Code
LEFT JOIN dbo.luYearLevel
ON SubjectClasses.NormalYearLevel = luYearLevel.Code
AND LTRIM(RTRIM(UPPER(luYearLevel.Campus))) = 'WC'
where
StudentClasses.ClassCode IS NOT NULL
AND SubjectClasses.AssessmentCode <> ''
)
GO