oracle 에서 union 은 전혀 연관없는 테이블들을 합집합의 결과값을 알려준다.
select a,b from A
union
select c,d from B
결과값은
a(a+c), b(b+d)의 결과값을 출력하게 된다.
대신 타입도 확인도 같이해서 써야한다.
a 컬럼이 number 타입이고 c컬럼이 varchar2 타입이라면 타입이 달라서 조건이 위배된다.
예시코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | SELECT AA.TEST_CD, AA.TEST_NM FROM ( SELECT A.TEST_CD AS TEST_CD, A.TEST_NM AS TEST_NM FROM TEST A WHERE A.TEST_CD = NVL(#sub_test_cd#, #test_cd#) UNION ALL SELECT B.SAMPLE_CD AS TEST_CD, B.SAMPLE_NAME AS TEST_NM FROM SAMPLE B | cs |
1 2 3 4 5 6 7 8 9 | <isNotEmpty property="srchBusType"> <isEqual property="srchBusType" compareValue="1"> INTERSECT (SELECT A.TEST_CD, A.TEST_NM FROM TEST A) </isEqual> <isEqual property="srchBusType" compareValue="2"> INTERSECT (SELECT B.SAMPLE_CD, B.SAMPLE_NAME FROM SAMPLE B) </isEqual> </isNotEmpty> | cs |
하지만 문구에따라 union으로 걸어진 값중에서 조건에 따라 어떨때는 A테이블만 어떨때는 B 테이블만 결과값을 가져오고 싶다면
INTERSECT 라는 문법을 이용하여 빼내올수 있다.
참고 주소: http://www.gurubee.net/lecture/1507
'ORACLE' 카테고리의 다른 글
[Oracle] group by 에 대한 고찰. (0) | 2019.03.08 |
---|---|
[Oracle] 만 나이 구하기 (0) | 2018.02.28 |
[ORACLE] 1이하의 소수점 처리 (0) | 2017.09.21 |