이런 경우엔 어떻게 하는게 좋을까요? 0 4 563

by Harut [2018.04.30 11:48:38]


년도 학기 학년 유급
2015 1학기 1 0
2015 2학기 2 1
2017 1학기 3 0
2017 2학기 4 0

안녕하세요,

위의 표처럼 한 학생의 학적과 유급상황을 기록한 테이블이 있습니다.

만약 해당 학생이 유급기록이 있다면 유급된 다음 학기부터 학년 - 2를 하여 조회하는 쿼리문을 만들고 싶습니다.

ex) 2015년 2학기에 유급하였으므로 2017년 1학기엔 1학년, 2학기엔 2학년, 2018년 1학기엔 3학년 2학기엔 4학년

어떤 방법을 사용하는게 좋을까요? 질문이 처음이라 난잡한점 이해 바랍니다 ㅜㅜ

 

by 마농 [2018.04.30 13:08:16]

학년,학기가 중간에 비는데? 이거 맞나요?
유급이 여러번 나오는 경우엔 어떻게 될까요?


by Harut [2018.04.30 13:15:24]

휴학하는 학기도 있기 때문에 비는 학년,학기도 있습니다.

유급이 2번 이상일 경우 퇴학처리됩니다. 본문에 안적어놨네요;;


by 마농 [2018.04.30 13:54:09]
WITH t AS
(
SELECT 1 학번, '2015' 년도, '1학기' 학기, 1 학년, 0 유급 FROM dual
UNION ALL SELECT 1, '2015', '2학기', 2, 1 FROM dual
UNION ALL SELECT 1, '2017', '1학기', 3, 0 FROM dual
UNION ALL SELECT 1, '2017', '2학기', 4, 0 FROM dual
)
SELECT 학번, 년도, 학기, 학년, 유급
     , 학년
     - NVL(SUM(유급) OVER(PARTITION BY 학번 ORDER BY 년도, 학기
           ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING)
           , 0) * 2 결과학년
  FROM t
;

 


by Harut [2018.04.30 14:12:56]

이런 방법이 있다니 아직 배울게 많군요...

도움 감사드립니다!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입