그룹별로 ID(숫자) 값 주기

동일한 IDX값으로 그룹으로 묶은 후 ID(숫자) 값을 부여

예제 파일 : sql_group.txt


테이블 정보


결과 

참고: http://stackoverflow.com/questions/4491052/numbering-of-groups-in-select-oracle

dense_rank() 사용

select * 
from (
    select
          dense_rank() over(order by idx desc) as grp,
                  t.*
        from test t
)
         

 

rownum 사용
1. 그룹으로 지정할 idx 컬럼의 데이터 종류 갯수 조회
2. idx 컬럼 데이터 종류별 rownum 설정
3. 전체 테이블의 idx 값에 컬럼 종류별 설정한 rownum 값을 매칭

select
          t.grp, t2.*
from (
  select t.*, rownum as grp
  from (
    select distinct idx
    from test
    order by idx desc
  )t
)t
join test t2
on t.idx = t2.idx
order by grp


+ Recent posts