by 백광현 [SQL Query] GREATEST LEAST [2015.06.29 18:17:52]
궁금한게 있습니다.
A테이블
COL1 | COL2
1 | 2015-01-01
B테이블
COL1 | COL2
2 | NULL
C테이블
COL1 | COL2
3 | 2015-06-02
질문 :
A/B/C 테이블에서 COL2값이 MAX인 값에 해당하는 COL1의 값을 가져오고 싶어요.
COL1 3을 가지고 오고 싶은거죠.
SELECT GREATEST(A.COL2, B.COL2, C.COL2)
FROM A테이블 A, B테이블 B, C테이블 C
;
위와 같이 하면 COL2의 MAX값은 가져오긴 한데,
좀 더 꼼수를 쓴다면 COL2 || COL1으로 대체해서 MAX값을 찾고 최종적으로 자리수를 끊어서 판별을 해도 되긴 한데요.
이럴 경우 어떻게 처리하는게 효율적인지 알고 싶습니다.
SELECT * FROM (SELECT col1, col2 FROM (SELECT col1, col2 FROM A테이블 WHERE col2 IS NOT NULL ORDER BY col2 DESC) WHERE ROWNUM <= 1 UNION ALL SELECT col1, col2 FROM (SELECT col1, col2 FROM B테이블 WHERE col2 IS NOT NULL ORDER BY col2 DESC) WHERE ROWNUM <= 1 UNION ALL SELECT col1, col2 FROM (SELECT col1, col2 FROM C테이블 WHERE col2 IS NOT NULL ORDER BY col2 DESC) WHERE ROWNUM <= 1 ORDER BY 2 DESC, 1 DESC ) WHERE ROWNUM <= 1 ;