계층함수라고 해야되나요,,,??? 도와주세요 0 4 1,109

by 현씨 [SQL Query] [2014.03.12 14:34:50]



안녕하세요~
1,2번을 가지고

결과처럼 나오고 싶은데여
지금 저는 서브쿼리를 써서

사원 이름 생일 월급
A 홍길동 01월 01일 1월 100
A 홍길동 01월 01일 2월 200
A 홍길동 01월 01일 3월 300
B 전지현 02월 01일 1월 100
B 전지현 02월 01일 2월 200
B 전지현 02월 01일 3월 300

이렇게 나옵니다.

select  a.사원, a.name,a.생일,b.월 , b.월급
from sabun a, (select * from amt
    where 월 like %'2014') b
where a.사원=b.사원

결과처럼 나오게 조언좀 부탁드려요~


1.   amt    2. sabun

사원 월급 사원 이름 생일
1월 A 100 A 홍길동 01월 01일
2월 A 200 B 전지현 02월 01일
3월 A 300
1월 B 100
2월 B 200
3월 B 300


결과

사원 이름 생일 월급
A 홍길동 01월 01일 1월 100
  2월 200
      3월 300
B 전지현 02월 01일 1월 100
  2월 200
      3월 300
by 마농 [2014.03.12 15:25:31]
SELECT DECODE(rn, 1, 사원) 사원    -- 순위가 1인 것만 출력
     , DECODE(rn, 1, 이름) 이름
     , DECODE(rn, 1, 생일) 생일
     , 월
     , 월급
  FROM (SELECT a.사원
             , a.이름
             , a.생일
             , b.월
             , b.월급
             , ROW_NUMBER() OVER(PARTITION BY b.사원 ORDER BY b.월) rn    -- 분석함수로 순위부여
          FROM sabun a
             , amt   b    -- 굳이 서브쿼리사용(절차적 코딩 습관)하실 필요 없습니다.
         WHERE a.사원 = b.사원
           AND b.월 LIKE '2014%'
        )
;

by 현씨 [2014.03.12 15:43:46]

제가 10g 를 쓴지 얼마 안되서 조금 상위버전 쿼리를 잘 몰라요
정말 감사합니다 마농님

by 마농 [2014.03.12 15:49:08]
분석함수는 8i (8.1.6) 버전부터 사용 가능합니다.

by 현씨 [2014.03.12 16:28:43]

네 ㅎㅎ 저 있는곳이 7버전이었다가 작년말에 업그레이드 했거든여~;;;;
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입