消除 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'
);
我有一份 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'
);