我工作的教育部门想要从他们的在线奖学金申请中提取一些报告,但在我拉它们之前,我需要清理数据。他们需要的一件事是任何改变学位的学生的名单。目前在包含我所拥有的学位信息的表格中:
SchoolYearID,StudentID,InstID,Degree,Major,Minor,IsCurrent,OtherSchool,OtherSchoolHours,DateCreated和InstStudentID。
如何构建此应用程序,SchoolYearID是主键,学生ID在注册时分配给学生,InstID是给予大学的ID。在应用程序本身,学生可以选择他们的硕士学位计划,但在下一页选择他们是新生。我不可避免地会将此更改为有条件的,但现在只有很多学生将错误的学位计划放下,所以我们需要进入并更改它们。
我无法弄清楚的是如何选择学生个人ID以及学位计划,但只显示学位从一学年到另一学年的学生。
编辑: SchoolYearID只是在创建时分配给每个应用程序的编号,它与日历年没有任何关系。为每个新应用程序生成一个新的SchoolYearID,学生可以申请3个不同的学期(春季,夏季,秋季),这样一个学生就可以在同一个日历年中拥有3个不同的SchoolYearID。
所以喜欢
SELECT *
FROM CpnServicePortal.dbo.SchoolEnrollment
将返回类似
的结果 SchoolYearID StudentID InstID Degree DegreeOther ...
55 12 3232 M.B.A NULL
56 13 3235 Other NULL
60 20 3426 A.S. NULL
我想要提出的是
SchoolYearID StudentID InstID Degree DegreeOther ...
55 12 3232 M.B.A NULL
123 12 3232 A.S. NULL
60 20 3426 A.S. NULL
728 20 3426 B.S. NULL
匹配studentID(如果可能,InstID也匹配),但Degree字段不匹配。
答案 0 :(得分:0)
这是经典的年度分析:
我假设每个学生每年都有一条记录。您必须修改才能获得要比较的记录。
localStorage['token_time'] = ''+myDate.getTime();
// And to restore it :
var myDate = new Date(parseInt(localStorage['token_time'], 10));
答案 1 :(得分:0)
要了解哪些学生拥有多个学位,请使用exists
与max
和min
一起选择一个选项:
select studentid, degree
from SchoolEnrollment s
where exists (
select 1
from SchoolEnrollment s2
where s.studentid = s2.studentid
group by studentid
having max(degree) != min(degree)
)
我不确定你如何定义一个不同的年份,因为我没有看到yearid
列。