我正在尝试通过我学校的课程获取有关房间使用情况的信息。我使用了如下SQL语句:
SELECT TOP (100) PERCENT Room,
Subject,
COUNT(Subject) AS Expr1
FROM dbo.Timetable
GROUP BY Room,
Subject
ORDER BY t.Room
假设我的学校只有一个房间叫M13
。这个SQL语句可能会给我:
Room Subject Expr1
M13 English 7
M13 Maths 41
如您所见,此会议室的总使用量为每个时间表周期48个班级。如果每个时间表周期的总最大值是60个周期(每天6个周期x一个周期中的10天),我怎样才能在每个房间的末尾自动添加一行,显示房间未被使用的周期数。在上面两行之后排:
Room Subject Expr1
M13 English 7
M13 Maths 41
M13 Not Used 12
显然,我想为学校的每个房间做同样的事情,但为了简单起见,我刚刚在这里展示了一个房间。
我根本不确定这是否可能或如何做到这一点所以任何帮助都会很棒。
答案 0 :(得分:2)
如果您正在使用SQL Server,我想到的唯一解决方案是UNION两个SELECT语句的结果,一个用于选择类的占用,另一个用于计算非占用并结合结果。
SELECT TOP (100) PERCENT Room,
Subject,
COUNT(Subject) AS Expr1
FROM dbo.Timetable
GROUP BY Room,
Subject
UNION ALL
SELECT TOP (100) PERCENT Room,
'Not Used',
60 - COUNT(Subject) AS Expr1
FROM dbo.Timetable
GROUP BY Room
ORDER BY t.Room
以下是带有查询的SQLFiddle