SELECT FLAG1 || FLAG2 FROM
(
SELECT FLAG1 FROM
(
SELECT SUBSTR(OD1.FLAG, 1,1) FLAG1 FROM OBUMODELTYPE OD1
WHERE OD1.COMPID = '00111'
AND OD1.SELFTYPE = 'N'
AND OD1.FLAG IS NOT NULL
GROUP BY SUBSTR(FLAG, 1,1)
) FLAG1
UNION
SELECT FLAG2 FROM
(
SELECT TRIM(TO_CHAR(MAX(TO_NUMBER(SUBSTR(FLAG,2,3))) + 1, '00')) AS FLAG2
FROM OBUMODELTYPE
WHERE COMPID = '00111'
) FLAG2
)
;
위 쿼리를 보면 FLAG1와 FLAG2를 하나의 묶어보여줄려합니다.
부적절한 식별자로 계속 인식하는데....어떻게 고치면 결과값을 얻을 수 있는지 알고 싶습니다.
예로 FLAG1의 결과값이 G이고 FLAG2의 결과값이 33이라면
합쳐저서 보여지는 값은 G33으로 보여지게 만드는 겁니다.
아래 쿼리처럼 분리해서 쿼리를 실행하면 결과값은 나옵니다.
SELECT FLAG1 FROM
(
SELECT FLAG1 FROM
(
SELECT SUBSTR(OD1.FLAG, 1,1) FLAG1 FROM OBUMODELTYPE OD1
WHERE OD1.COMPID = '00111'
AND OD1.SELFTYPE = 'N'
AND OD1.FLAG IS NOT NULL
GROUP BY SUBSTR(FLAG, 1,1)
) FLAG1
)
;
--FLAG1, FLAG2의 값이 하나씩 있는 거죠? SELECT MAX(FLAG1) || MAX(FLAG2) FROM ( SELECT FLAG1, '' FLAG2 FROM ( SELECT SUBSTR(OD1.FLAG, 1,1) FLAG1 FROM OBUMODELTYPE OD1 WHERE OD1.COMPID = '00111' AND OD1.SELFTYPE = 'N' AND OD1.FLAG IS NOT NULL GROUP BY SUBSTR(FLAG, 1,1) ) UNION ALL SELECT '' FLAG1, FLAG2 FROM ( SELECT TRIM(TO_CHAR(MAX(TO_NUMBER(SUBSTR(FLAG,2,3))) + 1, '00')) AS FLAG2 FROM OBUMODELTYPE WHERE COMPID = '00111' ) ) ;
-- 다양하게 조인되는 경우면 SELECT FLAG1||FLAG2 FROM ( SELECT SUBSTR(OD1.FLAG, 1,1) FLAG1 FROM OBUMODELTYPE OD1 WHERE OD1.COMPID = '00111' AND OD1.SELFTYPE = 'N' AND OD1.FLAG IS NOT NULL GROUP BY SUBSTR(FLAG, 1,1) ) A , ( SELECT TRIM(TO_CHAR(MAX(TO_NUMBER(SUBSTR(FLAG,2,3))) + 1, '00')) AS FLAG2 FROM OBUMODELTYPE WHERE COMPID = '00111' ) B