union all order by 질문입니다(오라클) 0 3 2,683

by Kaiger [SQL Query] [2023.04.06 15:38:35]


1.jpg (80,984Bytes)

SELECT B.QSC_ID                  
             , 'Q' QATYPE
             , TO_CHAR(B.QEUSTION_SEQ) QEUSTION_SEQ
             , '' QSC_REPLY_NO
             , B.QUESTION_CNTC          
             , B.QSC_QUESTION_NO
        FROM CUAPP.MBQS020LT B
        WHERE B.QSC_ID = '2023040500063'
        AND B.DEL_YN = 'N' 
        UNION ALL 
        SELECT C.QSC_ID
             , 'A' QATYPE
             , '' QEUSTION_SEQ
             , TO_CHAR(C.QSC_REPLY_NO) QSC_REPLY_NO
             , CASE WHEN C.REPLY_TYP_CD = '02' THEN '[주관식] ' ||  C.REPLY_CNTC
                    WHEN C.REPLY_TYP_CD = '04' THEN '[별점형] ' ||  C.STAR_CNT
               ELSE C.REPLY_CNTC END AS QUESTION_CNTC
             , C.QSC_QUESTION_NO
        FROM CUAPP.MBQS030LT C
           , CUAPP.MBQS020LT D
        WHERE C.QSC_ID = '2023040500063'
        AND C.QSC_ID = D.QSC_ID 
        AND C.QSC_QUESTION_NO = D.QSC_QUESTION_NO 
        AND D.DEL_YN = 'N'
    ORDER BY QSC_QUESTION_NO,QATYPE DESC, QSC_REPLY_NO

 

쿼리 결과는 이미지 첨부하였습니다.(캡쳐화면)

원하는 결과는 아래와 같습니다. (표)

QEUSTION_SEQ  2 가 제일 아래로 가있는데 아래와 같이 순서대로 표현하려고 합니다.

감사합니다.

QSC_ID QATYPE QEUSTION_SEQ QSC_REPLY_NO QSC_QUESTION_NO
a1 Q 1   1
a1 A   1 1
a1 A   2 1
a1 A   3 1
a1 Q 2   5
a1 A   1 5
a1 Q 3   2
a1 A   1 2
a1 Q 4   3
a1 A   1 3
a1 A   2 3
a1        
a1        

 

by 마농 [2023.04.06 15:57:27]

첫번째 쿼리의 QEUSTION_SEQ 에서는 TO_CHAR 를 빼고
두번째 쿼리의 QEUSTION_SEQ 를 D.QEUSTION_SEQ 로 바꾸고
QEUSTION_SEQ 로 정렬


by Kaiger [2023.04.06 16:04:20]

감사합니다!!! 잘 해결되었습니다


by 마농 [2023.04.06 16:33:42]

추가로. 정확한 정렬을 위해서는 TO_CHAR 를 하면 안됩니다.
- 첫번째 쿼리의 qsc_reply_no 의 '' 을 NULL 로 바꾸고
- 두번째 쿼리의 qsc_reply_no 의 TO_CHAR 를 제거

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