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

时间:2015-03-02 11:05:51

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

我有一份员工培训记录表,显示参加的课程(记录为“完成”)和注册的课程。通常,员工将在几年前的“完成”课程中再次注册。因此存在两行 - 一行用于完成,一行用于注册。

在这些情况发生的地方 - 我只想显示'已登记'行。

数据的结构如下:

enter image description here

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

有关如何在发生这些行时删除这些行的任何想法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用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'
        );