2012-03-26 5 views
1

내 검색 결과를 제한해야합니다. 나는 행 수가 아닌 ID를 기반으로 제한해야합니다.Oracle 행 제한

ex: ID EVENT EVENT_DESC 
    __ _____ __________ 
    1723 1A 1A desc 
    1723 1B 1B desc 
    2214 2A 2A desc 
    2214 2B 2B desc 

상위 10 개가 아닌 상위 10 개 ID를 가져와야합니다. 어떻게해야할지 모르겠습니다. 이 문제를 해결할 수있는 의사에게 알려 주실 수 있습니까?

+0

"최고"를 정의합니다. 가장 큰 ID 값? 가장 작은 ID 값? 가장 많은 행을 가진 값? –

+0

ID가 거래 번호 인 표가 있습니다. 트랜잭션은 하나의 트랜잭션에 대해 여러 개의 이벤트를 가질 수 있습니다. 예를 들어 트랜잭션 1723은 이벤트 1A, 1B 등을 가질 수 있습니다. rownumb은 처음 10 개의 레코드를 가져옵니다. 나는 처음 10 번의 거래를하고 싶다. 쿼리 내에서 쿼리를 작성해야했습니다. 10 개의 트랜잭션 ID를 가져온 다음 10 개의 트랜잭션과 연결된 나머지 이벤트 데이터를 가져옵니다. 나는 rownum을 사용하여 트랜잭션 (ID)을 기반으로 내 결과를 필터링 할 수 있는지보고 싶었습니다. Rownum은 10 건이 아니라 10 건만 기록했습니다. – user1046203

답변

4
SELECT * 
FROM (
    SELECT id, 
      event, 
      event_desc, 
      rank() over (order by id desc) as rnk 
    FROM your_table 
) 
WHERE rnk <= 10 
2

이와 비슷한 제품을 찾고 계십니까?

SQL 서버

SELECT TOP 10 ID FROM TABLE 
GROUP BY ID 

오라클

SELECT ID FROM (
    SELECT DISTINCT ID FROM TABLE ORDER BY ID 
) 
WHERE rownum <= 10 
+0

예. 이 같은 것을 – user1046203

+0

나는 오라클로 할 수 있습니까? – user1046203

+0

예. PL \ SQL –