消除 SQL Server 2008 R2 中不需要的行

Eliminating unwanted rows in SQL Server 2008 R2

我有一份 table 的员工培训记录,显示参加过的课程(记录为 'Finished')和注册的课程。通常,员工会再次注册他们 'Finished' 年前的课程。因此存在两行 - 一行用于已完成,另一行用于已注册。

发生这些情况的地方 - 我只想显示 'Enrolled' 行。

数据结构如下:

如果有帮助 - Finished 课程的 Course_Start_Date 总是早于 Enrolled 开始日期。

请问关于如何删除这些行的想法?

您可以使用 NOT EXISTS 来排除同一个人当前注册同一课程的课程。

SELECT  En, Last_Name, FirstName, Course, Course_start_Date, Enrollment_Status
FROM    T
WHERE   Enrollment_Status = 'Enrolled'
OR      NOT EXISTS 
        (   SELECT  1 
            FROM    T AS T2 
            WHERE   T2.En = T.En
            AND     T2.Course = T.Course
            AND     T2.Enrollment_Status = 'Enrolled'
        );