질문에 제아이디가 언급되어 있어 늦었지만 의견을 적습니다.
우선 무엇때문에 UNION ALL처리가 있는지 정확한 목적은 알 수 없으나 단지 조인에 빠진 데이터를 추가하기 위한 목적이라면 아우터조인으로 풀어도 될 듯 합니다.
아래 쿼리 결과 확인 해 보시고, 다르다면 무엇이 어떻게 다른지 알려주세요.
SELECT
종목번호
, 영문명
, 단축영문명
, 기준가
, 상한가
, 하한가
, 최고가격
, 행사가
, CASE WHEN B.구분 IN ('F') THEN ' 500000.000000'
WHEN B.구분 IN ('C' ,'P') THEN ' 100000.000000'
WHEN B.구분 IN ('S') THEN ' 150000.000000'
ELSE '0000000.000000'
END AS 승수
, DECODE(B.구분
, 'F', ' 1000'
, 'C',' 5000'
, 'P',' 5000') AS 주문한도
, A.UP_15
, ... 중략 ...
, A.DOWN_15
FROM 마스터 B
, ( SELECT
종목번호
, MAX(DECODE(A.가치구분,15, A.이론가)) AS UP_15
, ... 중략 ...
, MAX(DECODE(A.가치구분,-15,A.이론가)) AS DOWN_15
FROM 이론가
WHERE SUBSTR(종목번호, 2, 2) = '01'
GROUP BY 종목번호
) A
WHERE B.종목번호 = A.종목번호(+)
AND B.날짜 > 0
ORDER BY 종목번호
건승하시길...수고하세요~~