안녕하세요.
데이터 쿼리 여쭤보려고 합니다 ㅠ.ㅠ
-------------------------------------------------
A테이블
컬럼1
13
23
33
-------------------------------------------------
B테이블
컬럼1 컬럼2
13 N
12 Y
11 N
23 Y
33 N
-------------------------------------------------
이렇게 두 테이블이 있는데요. A테이블을 기준으로 해서 B테이블을 조인해서 A테이블이 사용여부가 'Y' 이면 그대로 보여주고
A테이블의 사용여부가 'N' 인 데이터 중 A테이블의 컬럼1의 첫번째 자리와 B테이블의 컬럼1의 첫번째 자리와 같은 데이터중에
B테이블의 컬럼2의 데이터가 'Y' 인 max 데이터를 구하고 싶습니다.
-------------------------------------------------
결과 데이터
12
23
-------------------------------------------------
select decode(b.컬럼2, 'Y', a.컬럼1,(select max(컬럼1) from B테이블 where 컬럼2 = 'Y' and 컬럼1 like substr(a.컬럼1, 0, length(a.컬럼)-1) || '%') as aa
from A테이블 a, B테이블 b
where a.컬럼1 = b.컬럼1
and decode(b.컬럼2, 'Y', a.컬럼1,(select max(컬럼1) from B테이블 where 컬럼2 = 'Y' and 컬럼1 like substr(a.컬럼1, 0, length(a.컬럼)-1) || '%') is not null
-------------------------------------------------
이렇게 쿼리를 하면 원하는 데이터는 얻을 수 있지만 속도가 많이 늦습니다.
도움 부탁드려요 ㅠ.ㅠ |