개발하는 '정'/DB
ORACLE 최근 3개년 데이터 (+ 없으면 0으로 출력)
주앤정_블로그
2023. 1. 18. 09:40
ORACLE 최근 3개년 데이터 (없으면 0으로 출력)
1. 테이블명 'TABLENAME'에는 아래와 같은 데이터가 있다.
YEAR (연도) | 값 (COUNT) |
2023 | 100,000 |
2021 | 50,000 |
2020 | 120,000 |
2016 | 38,000 |
2. 최근 3개년 데이터 조회 쿼리는 아래와 같다.
SELECT YEAR,COUNT
FROM TABLENAME
WHERE YEAR > extract(year from sysdate)-2
--WHERE TO_CHAR(YEAR,'YYYY') > extract(year from sysdate)-2 --YEAR 필드가 NUMBER 값일 때는 TO_CHAR 적용
YEAR (연도) | 값 (COUNT) |
2023 | 100,000 |
2021 | 50,000 |
3. 비어있는 연도 (2022년)에 대한 값을 추가하는 쿼리는 아래와 같다.
SELECT YEAR, 0 COUNT
FROM
(
--TABLENAME에 없는 YEAR만 추출
SELECT extract(year from sysdate)-2 YEAR FROM DUAL
UNION SELECT extract(year from sysdate)-1 YEAR FROM DUAL
UNION SELECT extract(year from sysdate)-0 YEAR FROM DUAL
MINUS
SELECT YEAR
FROM TABLENAME
WHERE YEAR > extract(year from sysdate)-2
) A
UNION
SELECT YEAR, COUNT
FROM TABLENAME
WHERE YEAR > extract(year from sysdate)-2
ORDER BY YEAR
YEAR (연도) | 값 (COUNT) |
2023 | 100,000 |
2022 | 0 |
2021 | 50,000 |
비어있는 연도를 추출한 후, 해당 연도에 대한 임의 값(A)과 원래 테이블(TABLENAME)과 연결하는 로직이다.
YEAR 필드와 SYSDATE의 YEAR에 대해 데이터 유형을 맞추는 것에 유의해야 함
쿼리가 좀 지저분해보이는게 흠....^^;
반응형
반응형