我正在尝试编写一个将翻转此表的 SQL 查询:
Start_time End_time Instructor Student
9:00 9:35 Joe Bob Andrew
9:00 9:35 Joe Bob Smith
9:00 9:35 Roberto Andy
10:00 10:35 Joe Bob Angelica
11:00 11:20 Roberto Bob
变成这样:
Instructor 9:00 10:00 11:00
Joe Bob Andrew, Smith Angelica NULL
Roberto Andy NULL Bob
我认为这是某种 PIVOT 命令,但我不确定应该如何编写 SQL 查询。时间都是动态生成的,所以如果查询会动态生成第二个表中的列名,我会更喜欢它(例如,如果原始表包含额外的开始时间 11:30,则应该有一个 11 的新列结果:30)。
提前谢谢你,我已经玩了一段时间了,但我自己无法让它工作。如有必要,我可以提供 SQL INSERT 命令为您提供完整数据。
编辑:将此 select 语句的结果作为 VIEW 将特别有帮助。谢谢!
编辑 2:生成创建第一个表的视图的代码是:
CREATE VIEW schedule_view AS SELECT RTRIM(SUBSTRING(students.schedule_first_choice, 1, 5)) AS start_time, RTRIM(SUBSTRING(students.schedule_first_choice, -10, 5) AS end_time, CONCAT(instructors.first_name, ' ', instructors.last_name) AS instructor_name,
CONCAT(students.first_name, ' ', students.last_name) AS student_name , students.swim_america_level as class
FROM students, instructors WHERE students.instructor_id = instructors.instructor_id AND students.season =
(SELECT constant_value FROM constants WHERE constant_name = 'season') AND students.year =
(SELECT constant_value FROM constants WHERE constant_name = 'year')