마농님의 쿼리 정말 감사히 잘 봤습니다.
근데 제가 문의에 빠진부분이 있어서 다시한번 부탁드릴게요 ;;;
A테이블의 pk가 a,b인 경우라서 적용하니 좀 다른 결과가 나오더라구요;;
그래서 수정해서 다시 올립니다.
A테이블 a의날짜 컬럼이 있고 a,b,c,d,e 컬럼에 임의의 값이 있는 테이블이 있습니다.
a | b | c | d | e | f |
2/1 | A | 1 | 1 | 1 | 1 |
2/1 | B | 2 | 2 | 2 | 2 |
2/4 | F | 3 | 3 | 3 | 3 |
2/10 | B | 50 | 50 | 50 | 50 |
2/10 | C | 60 | 60 | 60 | 60 |
결과. 일자가 A테이블 일자보다 작거나 같은 일자의 값을 셋팅하는 결과가 나오도록 하는데 어렵네요;;
일자 | a | b | c | d | e | f |
2/1 | 2/1 | A | 1 | 1 | 1 | 1 |
2/1 | 2/1 | B | 2 | 2 | 2 | 2 |
2/2 | 2/1 | A | 1 | 1 | 1 | 1 |
2/2 | 2/1 | B | 2 | 2 | 2 | 2 |
2/3 | 2/1 | A | 1 | 1 | 1 | 1 |
2/3 | 2/1 | B | 2 | 2 | 2 | 2 |
2/4 | 2/4 | F | 3 | 3 | 3 | 3 |
2/5 | 2/4 | F | 3 | 3 | 3 | 3 |
2/6 | 2/4 | F | 3 | 3 | 3 | 3 |
2/7 | 2/4 | F | 3 | 3 | 3 | 3 |
2/8 | 2/4 | F | 3 | 3 | 3 | 3 |
2/9 | 2/4 | F | 3 | 3 | 3 | 3 |
2/10 | 2/10 | B | 50 | 50 | 50 | 50 |
2/10 | 2/10 | C | 60 | 60 | 60 | 60 |
2/11 | 2/10 | B | 50 | 50 | 50 | 50 |
2/11 | 2/10 | C | 60 | 60 | 60 | 60 |
2/12 | 2/10 | B | 50 | 50 | 50 | 50 |
2/12 | 2/10 | C | 60 | 60 | 60 | 60 |
2/13 | 2/10 | B | 50 | 50 | 50 | 50 |
2/13 | 2/10 | C | 60 | 60 | 60 | 60 |
2/14 | 2/10 | B | 50 | 50 | 50 | 50 |
2/14 | 2/10 | C | 60 | 60 | 60 | 60 |
고수님들 도와주세요~~
WITH t AS ( SELECT '20200201' a, 'A' b, 1 c, 1 d, 1 e, 1 f FROM dual UNION ALL SELECT '20200201', 'B', 2, 2, 2, 2 FROM dual UNION ALL SELECT '20200204', 'F', 3, 3, 3, 3 FROM dual UNION ALL SELECT '20200210', 'B', 5, 5, 5, 5 FROM dual UNION ALL SELECT '20200210', 'C', 6, 6, 6, 6 FROM dual ) SELECT a.dt , b.* FROM (SELECT TO_CHAR(sdt + LEVEL - 1, 'yyyymmdd') dt FROM (SELECT TO_DATE(:sdt, 'yyyymmdd') sdt , TO_DATE(:edt, 'yyyymmdd') edt FROM dual ) CONNECT BY LEVEL <= edt - sdt + 1 ) a LEFT OUTER JOIN t b ON a.dt >= b.a LEFT OUTER JOIN t c ON c.a > b.a AND c.a < a.dt WHERE c.a IS NULL ;