반응형
계층형 쿼리에서 자주 볼수 있는 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 |
댓글