【发布时间】:2017-12-18 05:16:14
【问题描述】:
我目前正在使用 SQL Server 2008。我有多个记录让学生注册了同一门课程,但有些记录具有相同的开始日期和空值或结束日期的实际日期。如果同一学生的开始日期相同,我正在尝试获取具有空值的记录。系统中的数据还包含具有开始和结束日期的记录,但我打算保留这些记录。我已经尝试了下面的查询,但它没有给我任何结果。有没有办法做到这一点?任何帮助,将不胜感激。
SELECT DISTINCT
t1.*
FROM Enrolled_students t1
JOIN Enrolled_students t2
ON t1.studentid = t2.studentid
AND t1.program_enrolled = t2.program_enrolled
AND t1.startdate = t2.stardate
AND t1.enddate <> t2.enddate
数据
StudentID program StartDate enddate_Date
267342 Science 2016-09-19 00:00:00.000 NULL
267342 science 2016-09-19 00:00:00.000 2017-01-17 00:00:00.000
435359 math 2017-05-18 00:00:00.000 2017-08-29 00:00:00.000
290332 Lab 2014-02-11 00:00:00.000 NULL
结果
StudentID program startDate end_Date
267342 Science 2016-09-19 00:00:00.000 NULL
435359 math 2017-05-18 00:00:00.000 2017-08-29 00:00:00.000
290332 Lab 2014-02-11 00:00:00.000 NULL
【问题讨论】:
-
转述;您想删除任何具有
NULL结束日期的记录,但前提是存在匹配的记录(相同的学生、课程和开始日期),该记录具有实际的(NOT NULL) i> 结束日期?
标签: sql sql-server-2008 tsql