我有一份员工培训记录表,显示参加的课程(记录为“完成”)和注册的课程。通常,员工将在几年前的“完成”课程中再次注册。因此存在两行 - 一行用于完成,一行用于注册。
在这些情况发生的地方 - 我只想显示'已登记'行。
数据的结构如下:
如果有帮助 - Course_Start_Date
Finished
课程的总时间早于Enrolled
开始日期。
有关如何在发生这些行时删除这些行的任何想法吗?
答案 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'
);