【发布时间】:2019-05-08 13:29:37
【问题描述】:
下面我将放置一些表的结构来说明我正在尝试做的事情。
考虑到每个学生的上课时间是30分钟,我想选择学生的课表,但是我需要将课表顺序(每个课表30分钟,没有间隔)和老师和主题相同
我使用的是 SQL Server 2017。
学生
id name
1 Oliver
2 Jack
3 Harry
老师
id name
1 Amelia
2 Olivia
主题
id subject
1 Mathematics
2 Science
时间表
id startdatetime idstudent idteacher idsubject
1 2019-05-30 08:00 1 1 2
2 2019-05-30 08:40 1 1 2
3 2019-05-30 09:10 1 1 2
3 2019-05-30 09:40 1 2 2
4 2019-05-30 10:10 1 2 1
当按 idstudent 选择时,我想按如下分组显示结果:
Qty startdatetime teacher subject
1 2019-05-30 08:00 Amelia Science
2 2019-05-30 08:40 Amelia Science grouped in a single row(qty 2) because the class time has 30 minutes without interval, teacher and subject are the same.
1 2019-05-30 09:40 Olivia Science
1 2019-05-30 10:10 Olivia Mathematics
提前致谢!
【问题讨论】:
-
您是否尝试过编写此查询?如果是这样,请将其添加到您的帖子中。
-
时间戳[s 相隔 40 分钟,但您声称要在相隔 30 分钟时将它们分组。
-
@Gordon Linoff 分组的行是“2019-05-30 08:40”和“2019-05-30 09:10”
-
@Ryan Wilson 我的困难是我不知道如何比较课程之间是否有时间间隔。我从 SQL Server 开始。我什至认为我可以使用 CTE 或存储过程之类的东西,但由于我来自 Firebird,我遇到了很多麻烦
-
@Marcoscdoni 。 . .我更改了表格的格式,因此不需要滚动。当我查看数据时,它只在
schedule表中显示了四行,在所需结果中显示了四行——所以看起来没有任何东西被聚合。
标签: sql sql-server-2017