2017-12-18 382 views
3

我目前正在使用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 
+0

套用;你想刪除帶有'NULL'結束日期的任何記錄,但是隻有當具有實際的*('NOT NULL')*結束日期的匹配記錄*(相同的學生,程序和startdate)*時纔會刪除。 – MatBailie

回答

4

運行下面的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 
     ) 
+0

我認爲這是回到前面...... OP說'我試圖得到與空值的記錄' – MatBailie

+0

有時你會得到一個消息說:「通過設置操作消除空值」 –

1

你可以試試這個。

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 
相關問題