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에 대해 데이터 유형을 맞추는 것에 유의해야 함
쿼리가 좀 지저분해보이는게 흠....^^;
반응형
반응형
'개발하는 '정' > DB' 카테고리의 다른 글
[Oracle] Order by 1, 2, ... 구문의 의미와 사용 방법 (0) | 2023.06.07 |
---|---|
오라클 날짜 계산 (년, 월, 일, 시간 더하기/빼기) (0) | 2023.03.15 |
오라클 테이블 권한 조회 (0) | 2022.12.22 |
MSSQL SSMS 설치 (SQL Server Management Studio 설치) (0) | 2022.12.08 |
[MySql] 현재 접속 수 확인, 동시 접속 수 늘리기 (0) | 2022.10.28 |
댓글