根据以前的行自动添加行

时间:2013-07-17 05:36:35

标签: sql

我正在尝试通过我学校的课程获取有关房间使用情况的信息。我使用了如下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

显然,我想为学校的每个房间做同样的事情,但为了简单起见,我刚刚在这里展示了一个房间。

我根本不确定这是否可能或如何做到这一点所以任何帮助都会很棒。

1 个答案:

答案 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