卡在 Oracle SQL 查询中

Stuck with an Oracle SQL query

我有这样一个场景:有一个 table course_details 如下:

现在我正在寻找的是找到学生的详细信息 - 在本例中 Stu_id - 谁在 2016 年注册了课程。

例如 - 2016 年有课程 C1、C3 和 C4。在这些课程中,只有 S1 报读了所有这些课程。 S2和S3只录取了一些。

所以我的查询应该只给出 S1 的结果。

我尝试使用子查询分解,window 函数,但如果不对某些值进行硬编码就无法获得它。

下面的怎么样:

SELECT DISTINCT a.stu_id
FROM course_details AS a
WHERE
    NOT EXISTS (
        SELECT NULL FROM course_details AS b
        WHERE
            b.enrol_dt = 2016
            AND
            NOT EXISTS (
                SELECT * FROM course_details AS c
                WHERE c.c_id = b.c_id AND c.stu_id = a.stu_id
            )
    );