몇일전 이런경우가 생겨 오라클클럽[go]에 다음 그림을 캡쳐해 올리며 질문을 했다.
첨부한 jpg 의 상단 두개를 가지고 join 하여
아래의 결과값을 원하고 있습니다
A, B 테이블에서 A 날짜보다 작거나 큰값의 MAX 를 가져오면 될것 같은데
잘안되고 있습니다.
도움을좀 주세요 ^^
...
..
.
하루가 지나 그 다음날이 되니 다음과 같은 query 를 받을수 있었다.
(
SELECT '20090831' std_date, 'KCD' id FROM dual
UNION ALL SELECT '20090930', 'KCD' FROM dual
UNION ALL SELECT '20091031', 'KCD' FROM dual
UNION ALL SELECT '20091130', 'KCD' FROM dual
UNION ALL SELECT '20091231', 'KCD' FROM dual
)
, t2 AS
(
SELECT 'KCD' id, '20090828' std_date, 10 amt FROM dual
UNION ALL SELECT 'KCD', '20091005', 11 FROM dual
UNION ALL SELECT 'KCD', '20100826', 12 FROM dual
UNION ALL SELECT 'KCD', '20110101', 13 FROM dual
)
SELECT t1.std_date, t1.id
, MIN(amt) KEEP(DENSE_RANK LAST ORDER BY t2.std_date) amt
FROM t1, t2
WHERE t1.id = t2.id
AND t1.std_date >= t2.std_date
GROUP BY t1.std_date, t1.id
bold로 된 함수를 보고선 난 그 아래 "감사의 인사와 함께 함수 공부좀 해야겠네요..." 라고 글을 올렸다.
그리고 조금후.. 다른이에게 아래와 같은 query를 받았다.
WITH test AS
(
SELECT '20090831' s_date , 'KCD' id FROM dual UNION ALL
SELECT '20090930' , 'KCD' FROM dual UNION ALL
SELECT '20091031' , 'KCD' FROM dual UNION ALL
SELECT '20091130' , 'KCD' FROM dual UNION ALL
SELECT '20091231' , 'KCD' FROM dual
)
, test2 AS
(
SELECT 'KCD' id , '20090828' s_date , 10 amt FROM dual UNION ALL
SELECT 'KCD' , '20091005' , 11 FROM dual UNION ALL
SELECT 'KCD' , '20100826' , 12 FROM dual UNION ALL
SELECT 'KCD' , '20110101' , 13 FROM dual
)
SELECT a.s_date , a.id , Max(b.amt)
FROM test a, test2 b
WHERE a.id = b.id
AND a.s_date >= b.s_date
GROUP BY a.s_date , a.id
두번째 query의 도움을 받고나선 난 지금 '하악하악' 이라는 표현을 쓰고싶다...
(이외수 소설을 읽진 않았는데 갑자기 떠오름^^;;)
아 이 어찌된말인가...!!
기분은 뭐하더라도... 새로운 함수를 통한 응용을 배웠으니.. 잘 배워둬야겠다..
킁;;
집합적 사고가 필요해!! 집합적 사고가 필요해!! 집합적 사고가 필요해!! 집합적 사고가 필요해!! 집합적 사고가 필요해!! 집합적 사고가 필요해!! 집합적 사고가 필요해!! 집합적 사고가 필요해!! 집합적 사고가 필요해!! 집합적 사고가 필요해!! 집합적 사고가 필요해!! 집합적 사고가 필요해!! 집합적 사고가 필요해!! 집합적 사고가 필요해!! 집합적 사고가 필요해!! 집합적 사고가 필요해!! 집합적 사고가 필요해!! 집합적 사고가 필요해!! 집합적 사고가 필요해!! 집합적 사고가 필요해!! 집합적 사고가 필요해!! 집합적 사고가 필요해!! 집합적 사고가 필요해!! 집합적 사고가 필요해!!
'Computer Science > DB' 카테고리의 다른 글
C++ <vector>, Database 만들기 #2 저장(fwrite) (0) | 2012.07.10 |
---|---|
C++ <vector>, Database 만들기 (0) | 2012.05.12 |
ORACLE - SYSDATE 로 시간구하기 (6) | 2009.05.20 |
ORACLE - 문자열 추출 (substr) (0) | 2009.03.03 |
ORACLE DUMP() (0) | 2008.10.24 |