안녕하세요
각 구분코드 별로 맨처음 시작횟수부터 마지막 끝횟수까지 연속된 숫자로 각각 행을 만들고 싶습니다.
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 |
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