【问题标题】:Eliminating unwanted rows in SQL Server 2008 R2消除 SQL Server 2008 R2 中不需要的行
【发布时间】:2015-03-02 11:05:50
【问题描述】:
我有一张员工培训记录表,其中显示了参加的课程(记录为“已完成”)和注册的课程。通常,员工会再次参加他们多年前“完成”的课程。因此存在两行 - 一行用于 Finished,另一行用于 Enrolled。
这些情况发生的地方 - 我只想显示“已注册”行。
数据结构如下:
如果有帮助 - Finished 课程的 Course_Start_Date 总是早于 Enrolled 开始日期。
关于如何在这些行出现时删除它们有什么想法吗?
【问题讨论】:
标签:
sql-server
sql-server-2008-r2
【解决方案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'
);