2012-03-16 2 views
1

다소 어리석은 질문입니다. 제품과 함께 오라클 DB를 보유하고 있으며 처음 10 개 제품을 읽었습니다.PL/SQL의 변수/카운터 증가 결과

는 이제 다음과 같은 화면을

1 Product A 
2 Product XY 
3 Product B 

바보 같은 질문을 원하지만 방법 앞의 카운터를 얻을? 분명히 증가시켜야하지만 어떻게 작동하는지 이해할 수 없습니다. 또한 WITH 및 tmp 테이블과 함께 작동하도록 생각했지만 어떻게 설정해야하는지 알 수 없습니다.

SELECT POS ???, PRODUCTNAME FROM TBLPRODUCT 

저는 PL/SQL에 익숙하지 않습니다. 누군가 나에게 힌트를 줄 수 있습니까? 정말 고마워.

SELECT ROWNUM, PRODUCTNAME FROM TBLPRODUCT 

공유 및 즐길

답변

7

ROWNUM은 Bob이 나타낸 것처럼 하나의 접근법이지만 더 복잡한 쿼리를 사용하는 경우 - 특히 행을 명시 적으로 정렬하는 경우 - 원하는 결과를 제공하지 못할 수 있습니다. 행 번호를 결정하는 행의 순서가 전체 결과의 순서는 별도입니다

SELECT ROW_NUMBER() OVER (ORDER BY productname), productname 
    FROM tableproduct 
    ORDER BY productname 

참고 : 주문을 통해 명시 적으로 제어 가지고

요즘, 분석 기능은 일반적으로 더 나은 방법입니다 세트. 이 예에서는 원하는 순서대로 동일한 순서를 사용했지만, 이것이 더 많은 유연성을 제공한다는 점은 주목할 가치가 있습니다.

(그리고 약간 현학적 인에 대한 사과, 그러나 이것은 오라클에 포함 된 절차 언어 인 PL/SQL, 함께 할 수 없다.이는 SQL 오라클의 구현에 대한 간단하다.)

+2

+1, 거기에 당신이 나누는 정보가 물건을 더 분명하게 만들고 OP에 대한 더 나은 이해를 제공한다면, 현학적 인 것과 아무런 관련이 없습니다. – Ollie

+0

해결책 주셔서 감사합니다. 그것은 매우 흥미 롭다. 그리고 내가 모르는 것들을 다시 보여준다. (그러나, 나는 단지 처음 10 개를보고 싶다. 그러나 어떤 이유로 ROWNUM <= 10이 작동하지 않는 이유를 말해 준다. 올바른 및 잘못된 데이터 보여줍니다. 어떤 생각? 오, 미안 해요 잘못된 태그를 사용한 ... – Luka

+0

@ 루카 - 오라클에서 정상 n 쿼리를 제대로 수행하는 예제를보십시오 : http :// /stackoverflow.com/questions/6858325/oracle-top-n-ordered-rows. 문제 해결에 필요한 정보가 충분하지 않다면 알려주십시오. –

5

사용 ROWNUM.