임의의 행생성 관련 쿼리 질문 드립니다 0 2 5,823

by jps [SQL Query] oracle sql connect by [2024.04.01 17:03:30]


안녕하세요

각 구분코드 별로 맨처음 시작횟수부터 마지막 끝횟수까지 연속된 숫자로 각각 행을 만들고 싶습니다.

CONNECT BY 로 해보고 있는데 원하는 결과가 잘 안나오네요.

도움 요청 드립니다.

 

원본데이터

구분코드 횟수_시작 횟수_끝 지급률
AA 1 3 100
AA 4 4 90
AA 5 5 80
AA 6 10 40
BB 1 1 100
BB 2 2 90
BB 3 7 50
BB 8 8 40
BB 9 15 20

 

만들고 싶은 결과

구분코드 횟수 지급률
AA 1 100
AA 2 100
AA 3 100
AA 4 90
AA 5 80
AA 6 40
AA 7 40
AA 8 40
AA 9 40
AA 10 40
BB 1 100
BB 2 90
BB 3 50
BB 4 50
BB 5 50
BB 6 50
BB 7 50
BB 8 40
BB 9 20
BB 10 20
BB 11 20
BB 12 20
BB 13 20
BB 14 20
BB 15 20

 

by 마농 [2024.04.01 18:09:52]
WITH t AS
(
SELECT 'AA' cd, 1 s_cnt, 3 e_cnt, 100 rat FROM dual
UNION ALL SELECT 'AA', 4,  4,  90 FROM dual
UNION ALL SELECT 'AA', 5,  5,  80 FROM dual
UNION ALL SELECT 'AA', 6, 10,  40 FROM dual
UNION ALL SELECT 'BB', 1,  1, 100 FROM dual
UNION ALL SELECT 'BB', 2,  2,  90 FROM dual
UNION ALL SELECT 'BB', 3,  7,  50 FROM dual
UNION ALL SELECT 'BB', 8,  8,  40 FROM dual
UNION ALL SELECT 'BB', 9, 15,  20 FROM dual
)
SELECT *
  FROM t
     , (SELECT LEVEL cnt FROM dual CONNECT BY LEVEL <= 99)
 WHERE cnt BETWEEN s_cnt AND e_cnt
 ORDER BY cd, cnt
;
-- http://gurubee.net/article/55635

 


by jps [2024.04.02 09:11:55]

마농님 정말 감사합니다!!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입