2017-12-18 18 views
3

현재 SQL Server 2008을 사용하고 있습니다. 같은 코스에 등록한 학생이있는 레코드가 여러 개 있지만 일부 레코드의 시작 날짜가 같습니다 종료 날짜의 널값 또는 실제 날짜. 같은 학생의 시작 날짜가 같으면 Null 값으로 레코드를 가져 오려고합니다. 시스템의 데이터에는 시작 날짜와 종료 날짜가있는 레코드도 포함되어 있지만 이러한 레코드를 유지하려고합니다. 아래 쿼리를 시도했지만 결과를 돌려주지 않습니다. 이것을 달성 할 수있는 방법이 있습니까? 어떤 도움을 주시면 감사하겠습니다. DATASQL : 다른 레코드의 시작 날짜가 동일한 경우 종료 날짜에 null 값이있는 데이터 선택

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 

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   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

의역하려면; 실제적인 (NOT NULL') * enddate가있는 일치하는 레코드 * (학생, 프로그램 및 시작일) *가있는 경우에만 'NULL'종료일이있는 레코드를 삭제 하시겠습니까? – MatBailie

답변

4

실행 아래 SQL 결과. 이 종료 날짜

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는'null 값을 가진 레코드를 얻으려고한다 '고 말했다. – MatBailie

+0

가끔은 "null 값이 설정 연산에 의해 제거되었다" –

1

당신이 시도 할 수 있습니다에 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