두개의 결과값을 하나의 로우로 인식해서 보여줄려하는데 잘 안보여져서 문의드립니다. 0 3 1,145

by 널라리 [SQL Query] [2015.07.01 10:53:49]


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
   )
;

by 고슴도치 [2015.07.01 10:59:15]

제 경험상 부적절한 식별자 에러같은경우에는 거의 오타인 경우가 많았어요.

 

아무래도 상단 첫번째 SELECT FLAG1 || FLAG2 FROM 이부분을 SELECT FLAG1 || FLAG FROM .....

 

로 변경해보시면 어떨가 싶습니다.


by 널라리 [2015.07.01 11:29:04]

답변감사합니다.


by jkson [2015.07.01 11:17:48]
--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 

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입