* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Window8 Linux 64bit 등 | |
[cubrid_rel] 수행 결과 | |
CUBRID Manager 9.3.6.003 (64bit) | |
java |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
안녕하세요. 쿼리 작성중 예러가 발생하는데
원래 지원이 안되는 것인지 쿼리상 문제가 있는 것인지 확인 부탁드립니다.
oracle -> cubrid로 변환 작업중에 에러가 발생했습니다.
SELECT group_concat(menu_name order BY level desc separator ' > ')
FROM MENU
WHERE site=a.site
START WITH menu_idx='0001'
CONNECT BY menu_idx = prior upper_menu_idx;
아래와 같은 에러가 발생합니다.
CUBRID requires ORDER BY item to be the same expression as GROUP_CONCAT argument or an integer (argument position).
위의 쿼리에서
level 을 넣으면 위와 같은 에러가 발생합니다.
level 에 menu_name을 넣으면 정상적으로 작동하지만 원하는 결과 (order by에 따른 순서)가 나오지 않습니다.
1. group_concat에서 level 을 사용할 수 없는 것인지?
2. 아니면 위의 쿼리를 다른 방식으로 변경해야하는것인지
궁금합니다.
감사합니다.
group_concat() 에서 ORDER BY 사용 시 나열을 원하는 컬럼 또는 표현식만 사용 가능합니다.
group_concat(컬럼1 ORDER BY 컬럼1 [asc/desc]) 만 가능합니다.
그 외의 정렬이 필요한 경우에는 먼저 정렬된 쿼리를 인라인 뷰로 감싸서
group_concat() 함수에 ORDER BY 절을 제외 하시면 됩니다.
자세한 사용방법은 매뉴얼을 참고 하시기 바랍니다.
http://www.cubrid.org/manual/ko/9.3.0/sql/function/analysis_fn.html#group-concat