【发布时间】:2019-05-09 12:44:57
【问题描述】:
我需要为学生制定每周计划。
- 行是 12 小时 (08:00-20:00),
- 列为 6 天(周一至周六)。
- 学生在周一 9-11 和周二 11-14 之间有课程。
- 其他将显示为空。
我可以只用 SQL 创建一个这样的查询(矩阵)吗?
我目前的查询是这样的:
SELECT courseName, courseDay, courseStartHour, coursEndHour
FROM courses WHERE studentId = 1
这就是我想要的:
我在 Pivot 中做到了这一点:
同一小时可以包括多个课程。 (最多 2 个)
注意:我们有 Oracle 11g。
样本(简化)数据:
CREATE TABLE StudentCourses ( courseCode varchar2(8) NOT NULL, courseName varchar2(64) NOT NULL, day number(10), startHour number(10), endHour number(10));
INSERT INTO StudentCourses (courseCode, courseName, day, startHour, endHour ) VALUES ( 'ADV 352','Advertising Copywriting','1','9','11' );
INSERT INTO StudentCourses (courseCode, courseName, day, startHour, endHour ) VALUES ( 'ADV 352','Advertising Copywriting','1','11','13' );
INSERT INTO StudentCourses (courseCode, courseName, day, startHour, endHour ) VALUES ( 'ADV 332','Positioning Strategy in Advertising','2','9','12' );
INSERT INTO StudentCourses (courseCode, courseName, day, startHour, endHour ) VALUES ( 'COMM 324','Persuasion and Perception','2','14', '17' );
INSERT INTO StudentCourses (courseCode, courseName, day, startHour, endHour ) VALUES ( 'ADV 312','Corporate Communications Practicum','3','14','17' );
INSERT INTO StudentCourses (courseCode, courseName, day, startHour, endHour ) VALUES ( 'ADV 302','Strategic Media Planning','4','9','11' );
INSERT INTO StudentCourses (courseCode, courseName, day, startHour, endHour ) VALUES ( 'ADV 302','Strategic Media Planning','4','11','13' );
INSERT INTO StudentCourses (courseCode, courseName, day, startHour, endHour ) VALUES ( 'ADV 412','Case Studies in Advertising','4','13','15' );
INSERT INTO StudentCourses (courseCode, courseName, day, startHour, endHour ) VALUES ( 'ADV 411','Advertising Photography','4','14','16' );
INSERT INTO StudentCourses (courseCode, courseName, day, startHour, endHour ) VALUES ( 'ADV 412','Case Studies in Advertising','4','15','17' );
INSERT INTO StudentCourses (courseCode, courseName, day, startHour, endHour ) VALUES ( 'ADV 411','Advertising Photography','4','16','18' );
【问题讨论】:
-
你尝试了什么?您的预期结果是什么?
-
我添加了视觉效果。顺便说一句,是英文的课程表还是时间表?
标签: sql oracle plsql oracle11g