programing

Oracle: 'order by' 절이 있는 행 번호 표시

starjava 2023. 7. 21. 20:26
반응형

Oracle: 'order by' 절이 있는 행 번호 표시

가 order를 사용하는 sql 문에 대한 행 번호를 어떻게 출력할 수 있는지 궁금합니다.현재 저는 시도했습니다.ROWNUM하지만 제가 알기로는 정렬되지 않은 결과 세트에만 작동합니다.

SELECT rownum, a.lg_id, a.full_name, a.sort_order
  FROM activity_type_lang a
  where a.lg_id = 'en'
  order by a.full_name;

TIA

쿼리를 중첩하는 것 외에도 분석 기능을 사용할 수 있습니다.

SELECT row_number() OVER (ORDER BY a.full_name),
       lg_id,
       full_name,
       sort_order
  FROM activity_type_lang a
 WHERE a.lg_id = 'en'
 ORDER BY a.full_name

또한 분석 기능을 사용하면 침목 처리 방법을 변경하려는 경우 더 쉽게 처리할 수 있습니다.대체할 수 있습니다.ROW_NUMBER랭크 또는DENSE_RANK.

이미 해결책을 찾은 것 같군요

    Select rownum, lg_id, full_name, sort_order from 
(SELECT a.lg_id, a.full_name, a.sort_order
      FROM activity_type_lang a
      where a.lg_id = 'en'
      order by a.full_name);

주문하기 전에 rownum이 적용되므로 rownum, xxx.*을 다시 작성해야 합니다. (SELECT a.lg_id, a.full_name, a.lg_order FROM activity_type_message a.lg_id = 'en' order by a.full_name ) xxxx;

안녕하세요. 가 order를 사용하는 sql 문에 대한 행 번호를 어떻게 인쇄할 수 있는지 궁금합니다.현재 저는 ROWNUM을 시도했지만 제가 알기로는 정렬되지 않은 결과 세트에만 작동합니다.

분명히 하기 위해 (누군가가 잘못 이해할 수도 있습니다)그것은 효과가 있습니다(그러나 당신이 기대하는 방식은 아닙니다).문제는 정렬 전에 ROWNUM을 "부착"하고 기록은 얻지만 연속적인 ROWNUM 기록은 얻지 못한다는 것입니다. 왜죠?왜냐면

select 문에서 where 기준을 충족하는 첫 번째 레코드는 rownum=1입니다.

이것은 선택/주문 메커니즘이 어떻게 작동하는지에 대한 정말 좋은 예입니다.

언급URL : https://stackoverflow.com/questions/1377825/oracle-display-row-number-with-order-by-clause

반응형