Oracle 위 열 Level 사용
1 ID 의 수량 에 따라 순서대로 전개
현재 표 데 이 터 는 다음 과 같 습 니 다.
사용자 ID
시작 날짜
종료 날짜
USER_ID
START_DT
END_DT
U101
2016-11-02
2016-11-06
U102
2015-06-01
2015-06-03
다음 데 이 터 를 생 성 하려 면:
사용자 ID
날짜.
U101
2016-11-02
U101
2016-11-03
U101
2016-11-04
U101
2016-11-05
U101
2016-11-06
U102
2015-06-01
U102
2015-06-02
U102
2015-06-03
WITH TB AS
(SELECT 'U101' USER_ID, DATE'2016-11-02' START_DT, DATE'2016-11-06' END_DT FROM DUAL
UNION ALL
SELECT 'U102' , DATE'2015-06-01', DATE'2015-06-03' FROM DUAL
)
SELECT TB.USER_ID, TB.START_DT + LEVEL - 1
FROM TB
CONNECT BY TB.USER_ID = PRIOR TB.USER_ID
AND LEVEL <= (TB.END_DT - TB.START_DT + 1)
AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL;
2 ID 의 수량 에 따라 순서대로 전개
현재 표 데 이 터 는 다음 과 같 습 니 다.
사용자 ID
핸드폰 번호
수량
USER_ID
Mobile
CNT
U101
12345
3
U102
33563
4
다음 데 이 터 를 생 성 하려 면:
사용자 ID
핸드폰 번호
번호
USER_ID
MOBILE
LV
U101
12345
1
U101
12345
2
U101
12345
3
U102
33563
1
U102
33563
2
U102
33563
3
U102
33563
4
WITH TB AS
(SELECT 'U101' USER_ID, '12345' MOBILE, 3 CNT FROM DUAL
UNION ALL
SELECT 'U102' , '33563', 4 FROM DUAL
)
SELECT A.USER_ID,A.MOBILE,B.LV
FROM TB A
LEFT JOIN (
SELECT TB.USER_ID, LEVEL LV
FROM TB
CONNECT BY TB.USER_ID = PRIOR TB.USER_ID
AND LEVEL <= CNT
AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL
) B
ON A.USER_ID = B.USER_ID
3 무 작위 데이터 생 성
SELECT DBMS_RANDOM.VALUE
FROM DUAL
CONNECT BY LEVEL <= 100;
SELECT SYSDATE - LEVEL
FROM DUAL
CONNECT BY LEVEL <= 100;
4 전환 문자열
STR
크다
집.
좋다
SELECT SUBSTR(' ',LEVEL,1)
FROM DUAL
CONNECT BY LEVEL<=LENGTH(' ');
USER_ID
STR
U1
하하.
U1
그래.
U1
,
U1
세상.
U1
경계.
U2
그대
U2
좋다
U2
아.
U2
,
U2
땅.
U2
공.
WITH TB AS (
SELECT 'U1' USER_ID, ' , ' STR FROM DUAL
UNION ALL
SELECT 'U2', ' , ' FROM DUAL
)
SELECT TB.USER_ID,
SUBSTR(STR,LEVEL,1)
FROM TB
CONNECT BY TB.USER_ID = PRIOR TB.USER_ID
AND LEVEL <= LENGTH(STR)
AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL;
RN
STR
a
1
a
2
a
3
b
4
b
5
b
6
WITH tb AS
(SELECT 'a' rn, '1,2,3' i_name FROM dual
UNION ALL
SELECT 'b', '4,5,6' FROM dual)
SELECT rn,
regexp_substr(i_name, '[^,]+', 1, LEVEL)
FROM tb
CONNECT BY PRIOR dbms_random.value IS NOT NULL
AND PRIOR rn = rn
AND LEVEL <= length(i_name) - length(REPLACE(i_name, ',', '')) + 1;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Oracle 생성 향후 3일간의 전체 시점 (단계 상세)수요: X 좌표축 시간은 모두 정시 시간으로 앞으로 3일 동안의 예측을 보여준다(x 축은 앞으로 3일 동안의 정시 시간을 보여준다), 3시간마다 한 눈금, 가로 좌표는 모두 24개의 눈금을 보여준다 1단계: 현재 시...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.