본문 바로가기
TechNical/Oracle

over(partition by) 를 사용해 보자.

by 강멍멍이 강멍멍이 2008. 8. 28.
종합 선물 세트다. with, union all, decode, row_number(), over(partition by) 가 나온다.

with kk as (
    select '강군' as aa,'배고플때' as bb, '바나나' as cc from dual
    union all
    select '강군','배고플때','멍멍이' from dual
    union all
    select '강군','배부를때','고래' from dual
    union all
    select '강군','배부를때','참치' from dual
    union all
    select '강군','정신없을때','해삼' from dual
    union all
    select '강군','배부를때','바나나' from dual
    union all
    select '케이씨','정신없을때','해삼' from dual
    union all
    select '케이씨','정신없을때','고래' from dual
    union all
    select '케이씨','미쳤을때','고래' from dual
    )
   
select aa
     , bb
     , max(decode(cnt,1,cc))
     , max(decode(cnt,2,cc))
     , max(decode(cnt,3,cc))
  from (
         select kk.*
              , row_number() over(partition by aa,bb order by aa) cnt
           from kk
       )
 group by aa,bb;

결과는 요래 나옴

강군        배고플때         바나나     멍멍이    
강군        배부를때         고래        참치       바나나    
강군        정신없을때      해삼        
케이씨     미쳤을때         고래        
케이씨     정신없을때      해삼        고래      


참고로 그냥 조회를 하면 이런 결과가 나오신다.

강군        배고플때         바나나
강군        배고플때         멍멍이
강군        배부를때         고래
강군        배부를때         참치
강군        배부를때         바나나
강군        정신없을때      해삼
케이씨     미쳤을때         고래
케이씨     정신없을때      해삼
케이씨     정신없을때      고래



.... 스크랩 풀어 놓을까 ..ㅡㅡ 타자 치려면 힘들 것다..

댓글0