选择持续时间少于20小时的课程

时间:2018-05-10 11:56:21

标签: sql sql-server sql-server-2008

我需要从表中选择具有名称和持续时间的课程列表。

选择列表,使所有课程的持续时间总和低于20小时,以及表格中剩余的所有课程。

当来到20小时之间的课程时,即当课程在19小时至23小时之间,持续时间为4小时时,我需要将其选择为第1类。 我已经尝试了以下代码,但它没有考虑在20小时的两边之间的过程。

SELECT ID,
       Course 
FROM
    (
        SELECT a.ID,
               a.COURSE,
               a.DURATION,
               SUM(b.DURATION)  CUM_SUM 
        FROM #TempTable a JOIN #TempTable b ON a.ID >= b.ID 
        GROUP BY a.ID,a.COURSE,a.DURATION 
    ) temp 
WHERE CUM_SUM <=20

如何将所考虑的限制之间的课程纳入我需要选择的类别?

1 个答案:

答案 0 :(得分:0)

从您的子选择中移除Duration,并仅获取SUM

SELECT ID,
       Course 
FROM
    (
        SELECT a.ID,
               a.COURSE,
               SUM(b.DURATION)  CUM_SUM 
        FROM #TempTable a JOIN #TempTable b ON a.ID >= b.ID 
        GROUP BY a.ID,a.COURSE
    ) temp 
WHERE CUM_SUM <=20