데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
좌측에 보이는 것이 원본 테이블이고 우측이 원하는 결과물입니다.
메인메뉴가 A 가 나오고
메인이 A 인 서브가 나오고
그다음 메인B 가 나오고
메인이 B인 서브가 나오고
이런식의 정렬을 원해서요 ㅠ
메뉴 이름은 그냥 보기 좋게 A, B, C 로 한거라서 PARENT_MENU_NAME 이 정렬값은 될 수 없고,
메인메뉴의 IDX 와 서브메뉴의 ORDER INDEX 를 기준으로 해야하는데 쉽지 않네요
Comment 1
-
약은 중
2020.11.11 12:55
WITH ORGIN_DATA AS(SELECT 1 IDX,'A' MENU_NAME,NULL PARENT_IDX,1 ORDER_INDEX UNION ALLSELECT 2 IDX,'B' MENU_NAME,NULL PARENT_IDX,2 ORDER_INDEX UNION ALLSELECT 3 IDX,'C' MENU_NAME,NULL PARENT_IDX,3 ORDER_INDEX UNION ALLSELECT 4 IDX,'D' MENU_NAME,NULL PARENT_IDX,4 ORDER_INDEX UNION ALLSELECT 5 IDX,'E' MENU_NAME,NULL PARENT_IDX,5 ORDER_INDEX UNION ALLSELECT 6 IDX,'F' MENU_NAME,NULL PARENT_IDX,6 ORDER_INDEX UNION ALLSELECT 7 IDX,'G' MENU_NAME,NULL PARENT_IDX,7 ORDER_INDEX UNION ALLSELECT 8 IDX,'SUB1' MENU_NAME,1 PARENT_IDX,1 ORDER_INDEX UNION ALLSELECT 9 IDX,'SUB2' MENU_NAME,1 PARENT_IDX,2 ORDER_INDEX UNION ALLSELECT 10 IDX,'SUB3' MENU_NAME,1 PARENT_IDX,3 ORDER_INDEX UNION ALLSELECT 11 IDX,'SUB4' MENU_NAME,2 PARENT_IDX,1 ORDER_INDEX UNION ALLSELECT 12 IDX,'SUB5' MENU_NAME,2 PARENT_IDX,2 ORDER_INDEX UNION ALLSELECT 13 IDX,'SUB6' MENU_NAME,3 PARENT_IDX,1 ORDER_INDEX UNION ALLSELECT 14 IDX,'SUB7' MENU_NAME,4 PARENT_IDX,1 ORDER_INDEX UNION ALLSELECT 15 IDX,'SUB8' MENU_NAME,6 PARENT_IDX,1 ORDER_INDEX UNION ALLSELECT 16 IDX,'SUB9' MENU_NAME,6 PARENT_IDX,2 ORDER_INDEX )SELECT IDX,(SELECT ISNULL(MAX(MENU_NAME),A.MENU_NAME)FROM ORGIN_DATAWHERE IDX = A.PARENT_IDX) PARENT_MENU_NAME,MENU_NAME,PARENT_IDX,ORDER_INDEXFROM ORGIN_DATA AORDER BY CASE WHEN PARENT_IDX IS NULL THEN IDX ELSE PARENT_IDX END,PARENT_IDX,ORDER_INDEX;