본문 바로가기
개발하는 '정'/DB

ORACLE 최근 3개년 데이터 (+ 없으면 0으로 출력)

by 주앤정_블로그 2023. 1. 18.

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에 대해 데이터 유형을 맞추는 것에 유의해야 함

쿼리가 좀 지저분해보이는게 흠....^^;

 

 

 

반응형

 

 

반응형

댓글