본문 바로가기
DB/ORACLE

[ORACLE] CONNECT BY LEVEL 활용하기 (구구단 & 날짜 만들기)

by madinthe90 2022. 1. 19.
반응형

계층형 쿼리에서 자주 볼수 있는 CONNECT BY 절에서 , LEVEL을 사용하면, ​원하는 만큼의 행을 리턴

LEVEL을 사용하여 for문 처럼도 활용이 가능.

 

- 1~n행 까지 출력

SELECT LEVEL 
FROM DUAL
CONNECT BY LEVEL <= 10;

CONNECT BY LEVEL <= ? 를 사용하면 1부터 ? 까지 LEVEL 값이 증가

 

- 구구단 출력

SELECT A || ' X ' || B || ' = ' || A * B AS GOOGOODAN
FROM
(SELECT LEVEL + 1 A FROM DUAL CONNECT BY LEVEL < 9) a, -- A: 2단부터 시작
(SELECT LEVEL B FROM DUAL CONNECT BY LEVEL <= 9) b;    -- B: 1~9까지

 

- 이번달 날짜 출력

SELECT TRUNC(SYSDATE,'MM')+(ROWNUM-1) AS DAYS
FROM DUAL
CONNECT BY LEVEL <= LAST_DAY(SYSDATE) - TRUNC(SYSDATE,'MM') + 1;

 

- 특정달(21년 12월) 날짜 출력

SELECT TO_DATE('20211201','YYYYMMDD')+(ROWNUM-1) AS DECEMBER
FROM DUAL
CONNECT BY LEVEL <= LAST_DAY('20211201') - TO_DATE('20211201','YYYYMMDD') + 1;

반응형

'DB > ORACLE' 카테고리의 다른 글

[ORACLE] WITH 절  (0) 2022.02.03
[ORACLE] EXPLAIN PLAN 실행 계획  (0) 2022.01.24
[ORACLE] NVL,NVL2 (공백, NULL 값 치환)  (0) 2022.01.19
[ORACLE] DECODE, 오라클의 if else  (0) 2022.01.12
[ORACLE] 함수 쿼리 튜닝(스칼라 서브쿼리)  (0) 2022.01.10

댓글