2016-12-26 12 views
0

내가 문자열오라클은

예를 들어

값 집계 listagg()을 사용하고 너무 긴, 거기에 이런 테이블 :

Table1 
Name  Rank 
Bob  A 
Bob  B 
Bob  C 
Tom  A 
Tom  C 
SELECT Name,LISTAGG(RANK,';') WITHIN GROUP (ORDER BY RANK) AS COMRANK 
FROM Table1 

는 그리고 우리는 결과를 얻을 :

Name COMRANK 
Bob ABC 
Tom AC 
무엇 COMRANK이 너무 오래 될 경우? 내가 그들을 집계하기 전에 최고 XXX를 찾을 수 있을까요?

답변

2

당신은 윈도우 함수를 사용하여 행을 평가하고 필요한 랭크 개까지를 제한 할 수 있습니다.

SELECT Name,LISTAGG(RANK,';') WITHIN GROUP (ORDER BY RANK) AS COMRANK 
FROM (select 
    name, rank, 
    rank() over (partition by name order by rank) rnk 
    from Table1 
) where rnk < 10; --some value 
GROUP BY Name; 
+0

는 work.thanks을한다 – Garfield