仅计算匹配多个条件的最新条目

时间:2014-05-12 22:18:30

标签: sql azure-sql-database

我有一个类似于此的数据库表(但还有更多条目):

PupilId | PeriodId | Assessment
-------------------------------
1       | 10       | 7
1       | 30       | 7
1       | 50       | 7
2       | 20       | 7
3       | 10       | 7
3       | 20       | 8

我想找到在某个时间点(包括给定的PeriodId)获得特定评估的学生人数(即不同的PupilId)。只应使用给定PeriodId之前或之后的最新评估。

例如:

  • 在PeriodId 100 = 2(PupilId 1和2)之前或之前获得7的学生人数
  • 在PeriodId 10 = 2(PupilId 1和3)之前或之前获得7的学生人数
  • 在PeriodId 30 = 1(PupilId 3)之前或之前获得8的学生人数

这适用于SQL Azure。

非常感谢。

1 个答案:

答案 0 :(得分:0)

好的,没有答案,所以这是我在另一个来源的帮助下想出来的:

SELECT COUNT(1)
FROM (
    SELECT PupilId AS pupil_id, Max(PeriodId) AS max_period
    FROM steph1
    WHERE PeriodId <= 100
    GROUP BY PupilId
) steph2, steph1
WHERE
PupilId=pupil_id AND
max_period = PeriodId AND
Assessment = 7

希望能帮助其他人解决同样的问题。