Postgres에서 행 번호 선택


102

postgres에서 행 번호를 선택하는 방법.

나는 이것을 시도했다 :

select
    row_number() over (ORDER BY cgcode_odc_mapping_id)as rownum,
    cgcode_odc_mapping_id
  from access_odc.access_odc_mapping_tb
  order by cgcode_odc_mapping_id

이 오류가 발생했습니다.

ERROR : "over"또는 그 부근의 구문 오류
LINE 1 : (ORDER BY cgcode_odc_mapping_id)를 통해 row_number ()를 선택합니다.

이 페이지를 확인 했습니다. PostgreSQL 쿼리에서 행 번호를 표시하는 방법은 무엇입니까?


이것은 내 질문입니다.

 select row_number() over (ORDER BY cgcode_odc_mapping_id)as rownum,cgcode_odc_mapping_id from access_odc.access_odc_mapping_tb order by cgcode_odc_mapping_id 

이것은 오류입니다.

오류 : "over"또는 그 근처에 구문 오류가 있습니다. LINE 1 : (ORDER BY cgcode_odc_mapping_id)를 통해 row_number ()를 선택합니다.


3
Not Working우리가 도울 수있는 어떤 것도 말하지 않습니다. 오류 메시지 및 / 또는 기타 관련 정보를 제공해 주시겠습니까? 또한 사용중인 PostgreSQL 버전을 지정하십시오.
MatBailie 2012-08-14


1
추측으로는 지원하지 않는 이전 버전의 PostgreSQL에서 창 함수를 사용하려고하기 때문에 작동하지 않습니다.
Craig Ringer

2
PostgreSQL 버전 1.8.4는 없습니다.
kgrittn 2012-08-15

1
의 출력을 게시주세요 select version()- 더가 버전 1.8 (그리고 결코 없었다)
a_horse_with_no_name

답변:


178
SELECT tab.*,
    row_number() OVER () as rnum
  FROM tab;

여기에 은 문서의 관련 섹션입니다.

PS 이것은 실제로 참조 된 질문의 답변과 완전히 일치합니다.


18
또한 order in OVER절을 지정해야합니다 OVER (ORDER BY id).. 그렇지 않으면 주문이 보장되지 않습니다.
AlexM 2016 년

3
@pumbo Appears row_number ()는 "결과 집합의 행 번호"를 반환합니다 (즉, 항상 1 2 3 4 ... 지정 over ()하는 경우). 그러나 외부 쿼리가있는 경우 물론 결과 순서를 다시 정렬합니다. ref : stackoverflow.com/a / 32,453분의 3,397,149 의견
rogerdpack
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.