담당자 변경 이력으로 작업 시간대를 파악하는 쿼리 인데요
먼저 테이블을 말씀드리면
아래 2개 테이블을 보고
몇시 부터 몇시 까지 누가 담당했는지를 파악할 수 있는 쿼리가 필요합니다..
시간은 모두 datetime 형식이구요..
작업 테이블 | |||
key | 시작시간 | 종료시간 | 최종 사용자 |
keyA | 1:00 | 2:00 | 담당자A |
keyB | 1:30 | 2:00 | 담당자B |
담당자 변경이력 테이블 | |||
key | 변경시간 | 이전 사용자 | 변경 사용자 |
keyA | 1:10 | 담당자A | 담당자B |
keyA | 1:20 | 담당자B | 담당자C |
keyA | 1:30 | 담당자C | 담당자A |
결과는 아래와 같이 나와야 하는데 어떻게 해야할지 모르겠어요..
검색을 해보고 싶어도 뭐라고 검색해야 할지도 모르겠고요..
아이디어 좀 주시면 감사드리겠습니다.
시간대별 담당자 내역 | |||
key | 시작시간 | 종료시간 | 사용자 |
keyA | 1:00 | 1:10 | 담당자A |
keyA | 1:10 | 1:20 | 담당자B |
keyA | 1:20 | 1:30 | 담당자C |
keyA | 1:30 | 2:00 | 담당자A |
keyB | 1:30 | 2:00 | 담당자B |
---------------------------------------------------------------
지금까지 해보고 있는데요. 여기서 막히네요...ㅠ
쿼리
select A.key, A.시작시간, A.종료시간, A.최종사용자, B.변경시간, B.이전사용자, B.변경사용자
from 작업 A
left join 변경이력 B on A.key = B.key
union
select A.시작시간, A.종료시간, A.최종사용자, null, null, null
from 작업 A
order by A.KEY, 변경시간
결과
key | 시작시간 | 종료시간 | 최종 사용자 | 변경시간 | 이전 사용자 | 변경 사용자 |
keyA | 1:00 | 2:00 | 담당자A | 1:10 | 담당자A | 담당자B |
keyA | 1:00 | 2:00 | 담당자A | 1:20 | 담당자B | 담당자C |
keyA | 1:00 | 2:00 | 담당자A | 1:30 | 담당자C | 담당자A |
keyA | 1:00 | 2:00 | 담당자A | |||
keyB | 1:30 | 2:00 | 담당자B |
Comment 1
-
거북님
2017.03.03 09:31
비효율적인 DB구조를 변경하는 방법은 어떤게 있을까요?