listagg ... within 문법상으로만은 결합하고 싶은 칼럼의 rownum 지정이 불가능하다.
그래서, subquery 로 활용이 필요하다.
예제)
select c.pid , listagg(keyword, ',') within group(order by weight desc) as keywords from PROJECT_LIST c, ( select pid, keyword, weight, ROW_NUMBER() OVER (PARTITION BY rcn ORDER BY WEIGHT desc) as rnum from KEYWORD_WEIGHT ) d where c.pid = d.pid and rnum < 10 group by c.pid
위와 같이 subquery 를 만들어서 rnum 조건을 주는 방법으로 해결가능한다.
'개발 > 데이타베이스' 카테고리의 다른 글
group by 내부정렬 (0) | 2017.02.21 |
---|---|
HAVING 절 발효(?) 타이밍 (0) | 2017.02.21 |
[ORACLE] ROLLUP, CUBE, GROUPING (0) | 2017.02.06 |
[ORACLE] RANK OVER() / ROW_NUMBER() OVER() (0) | 2017.02.06 |
[ORACLE] LISTAGG ... WITHIN ... (0) | 2017.02.06 |
댓글