두개 테이블을 가지고 1개 쿼리를 날리는 문제를 풀려는데
잘 안되서 질문을 드립니다.
테이블 A는 단순히 날짜만 가지고 있습니다. (3/1, 3/2, 3/3, 3/4, 3/5....)
테이블 B는 특정 날짜에 금액이 있고요..(3/1 300, 3/4 500)
이걸 섞어서
A에는 있지만 B에는 없는 날짜에도 금액이 적히도록 하고 싶은데요..
3/1 300
3/2 300
3/3 300
3/4 500
3/5 500
---
이렇게요...
아직까지 생각해낸건
select A.date, B.money
from A,B
where A.date>= B.date
order by A.date
이정도인데.. 여기서 어떻게 B날짜 중 가장 적은 하나에 해당되는 금액만 나오게할 수 잇을 까요?
WITH t1 AS ( SELECT '20120301' dt FROM dual UNION ALL SELECT '20120302' FROM dual UNION ALL SELECT '20120303' FROM dual UNION ALL SELECT '20120304' FROM dual UNION ALL SELECT '20120305' FROM dual ) , t2 AS ( SELECT '20120301' dt, 300 amt FROM dual UNION ALL SELECT '20120304', 500 FROM dual ) SELECT t1.dt , LAST_VALUE(t2.amt IGNORE NULLS) OVER(ORDER BY t1.dt) amt FROM t1, t2 WHERE t1.dt = t2.dt(+) ;