사원의 출신학교 테이블이 있습니다.
이 테이블에서 모든 사원의 최종학력을 구하고 싶은데요..
테이블 구성
사원코드, 출신학교,입학일,졸업일,넘버링 총 5개의 컬럼으로 이루어져 있습니다.
데이터
홍길동, 한양대학교, 20010301,20050222,1
김하수,고려대학교,20020301,20040101,1
김하수,고려대석사,20050101,20080101,2
이철도,서울고등학교,20080101,20100101,1
이철도,서울대학교,20110101,20130101,2
김천사,홍익대학교,20010101,20050101,1
위와 같이 데이터가 있을 경우, 제가 원하는 값은
홍길동, 한양대학교, 20010301,20050222,1
김하수,고려대석사,20050101,20080101,2
이철도,서울대학교,20110101,20130101,2
김천사,홍익대학교,20010101,20050101,1 입니다.
여러가지 생각을 해봤는데 답이 잘안나오는 실정입니다. 도움부탁드립니다.
Comment 4
-
건우아빠
2013.06.24 12:29
-
q0822kang
2013.06.24 13:18
위와 같이 쿼리하면 넘버링=1인 값만 보여집니다.
-
건우아빠
2013.06.24 13:47
row_number() over(partition by 사원코드 order by 입학일 desc ) 로 사원별로 번호가 새롭게 부여가 됩니다.
사원별 1인 값만 나오면 원하시는 내용입니다...
-
한태
2016.03.08 16:55
create table universe
(e_code varchar(10),
e_uni varchar(15),
i_date datetime,
o_date datetime,
numbering int)
insert into universe values
('홍길동', '한양대학교', '20010301','20050222',1),
('김하수','고려대학교','20020301','20040101',1),
('김하수','고려대석사','20050101','20080101',2),
('이철도','서울고등학교','20080101','20100101',1),
('이철도','서울대학교','20110101','20130101',2),
('김천사','홍익대학교','20010101','20050101',1)
create clustered index c_odate on universe(o_date)
create index uni_code_odate on universe(e_code,o_date)
;with m_uni as
(
select e_code, MAX(o_date) o_date
from universe
group by e_code
)
select m.e_code, u.e_uni, u.i_date,m.o_date,u.numbering
from m_uni m inner join universe u
on m.o_date=u.o_date
먼저 최종대학을 구하고 조인하는 방식을 이용하였습니다.
with res as
(select 사원코드, 출신학교,입학일,졸업일,넘버링
, row_number() over(partition by 사원코드 order by 입학일 desc ) mno
from 테이블 )
select 사원코드, 출신학교,입학일,졸업일,넘버링
from res
where mno = 1