SQL:如果其他记录具有相同的开始日期,则选择结束日期为空值的数据
我目前正在使用SQL Server 2008.我有多个记录让学生在同一课程中注册,但一些记录具有相同的开始日期和空值或结束日期的实际日期。如果开始日期对于同一个学生是相同的,我试图获得带有空值的记录。系统中的数据还包含有开始日期和结束日期的记录,但我打算保留这些记录。我已经尝试了下面的查询,但它没有给我回任何结果。有没有办法做到这一点?任何帮助,将不胜感激。SQL:如果其他记录具有相同的开始日期,则选择结束日期为空值的数据
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
DATA
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
回答:
运行下面的SQL。这将返回与具有相同的学生+课程+在同一个表的另一个条目结束日期的学生档案开始日期结合NULL的结束日期
SELECT *
FROM Enrolled_students
WHERE enddate_Date IS NOT NULL
AND EXISTS
(
SELECT
1
FROM Enrolled_students ES
WHERE ES.StudentID = Enrolled_students.StudentID
AND ES.Program = Enrolled_students.Program
AND ES.StartDate = Enrolled_students.StartDate
AND ES.enddate_Date IS NULL
)
回答:
你可以试试这个。
SELECT * FROM Enrolled_students E1 WHERE NOT EXISTS
(SELECT * FROM Enrolled_students E2
WHERE E1.StudentID = E2.StudentID
AND E1.enddate_Date IS NOT NULL
AND E2.enddate_Date IS NULL)
结果:
StudentID program StartDate enddate_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
以上是 SQL:如果其他记录具有相同的开始日期,则选择结束日期为空值的数据 的全部内容, 来源链接: utcz.com/qa/260958.html