최근 6개학기를 구하는 쿼리를 짜고있습니다.
만약에 2021년도 1학기를 기준으로 앞 6개학기를 가져오고 싶어요
예를 들어 2021년도 1학기를 조회조건으로 했다면
1. 2021년도 1학기
2. 2020년도 2학기
3. 2020년도 1학기
4. 2019년도 2학기
5. 2019년도 1학기
6. 2018년도 2학기
정말 간단한건데 생각이 잘 안나네요..
with 쿼리로 짜고싶은데 잘 모르겟네요 ..
도움을 구합니다 ㅠㅠ
DBMS 은 어떤건가요?
oracle입니다!
SELECT LEVEL lv
, y - CEIL((LEVEL - s) / 2) year
, MOD(LEVEL + s, 2) + 1 semester
FROM (SELECT 2021 y, 1 s FROM dual)
CONNECT BY LEVEL <= 6
;
WITH t(lv, y, s) AS
(
SELECT 1 lv
, 2021 y
, 1 s
FROM dual
UNION ALL
SELECT lv + 1
, y - MOD(s, 2)
, MOD(s, 2) + 1
FROM t
WHERE lv < 6
)
SELECT *
FROM t
;