커서를 반환하는 저장 프로 시저가 있습니다.Oracle Pl/sql은 여러 쿼리에서 하나의 커서를 반환합니다.
응용 프로그램은 얼마나 많은 ID를 가져와야하는지 결정하는 프로 시저에 매개 변수를 전달하므로 프로시 저는 그 번호의 시간을 알 수 없습니다.
foreach ID 해당 ID를 사용하여 상위 3 개 레코드를 가져와야합니다. 내가 사용하려고 무엇을 :
가select * from table_name where id in (List of ID`s);
그 쿼리가 작동하지만 각 ID의 상위 3 개를 얻을 캔트. 내가 결과 카운트를 제한하면, 나는 첫 번째 ID의 TOP 결과를 얻을 것이다.
For 루프를 사용하여 각 ID에 대한 쿼리를 실행하고 커서에 결과를 추가한다고 생각했지만 이해는 불가능합니다.
어떤 아이디어?
더 상세 제가 5 ID s and each of them have inner Id
S가 있다고 가정하자 그래서 ID 1 갖는다 (1,2,3,4,5) ID 2 (1,2,3,4,5) 이드 3 (12,14,15,16,22) 이드 4 (2,3,5,7,9) 이드 5 (4,7,8,9,10) 이 경우, , 나는 행 번호가 나를 도울 방법을 보지 않는다. 각 ID에 대해 상위 3 개가 필요합니다.이 경우 커서에 15 개의 결과가 있어야합니다.
10 배 많이하고 좋은 주말을 가지고)
아마도
ID의 각성에 대해 상위 3 개를 결정하는 방법이 있습니다. –
@Udi l : 분석/순위 지정/윈도우 함수의 'PARTITION BY id'부분에서 수행하는 작업 (이 경우 ROW_NUMBER)입니다. –
당신은 완벽하게 작동합니다. 정확하게 필요한 것입니다. 10 배. –