드로우홀릭 더베이직
선생님, 안녕하세요. 중복 값 걸러내는 방법에 대하여 도움 요청드립니다.
테이블 A : old price list
테이블 B : new price list
고유값 : 부품번호 (parts number)
라고 할 때, 테이블 A와 B를 합쳐서 새로운 테이블 C를 만들어야 합니다.
이 때 테이블 C를 만드는 조건에는
첫째, 테이블 C에 한 부품번호가 중복되어 나오면 안됩니다.
둘째, 테이블 A, B에 동일한 부품번호 있을 경우에는 new price list 인 B테이블의 가격을 정보를 가지고 와야합니다.
셋째, 테이블 A에만 있는 부품, 그리고 테이블 B에만 있는 부품 정보도 모두 테이블 C에 들어가야 합니다.
이를 위해서 제가 현재 사용하고 있는 방법은 다음과 같습니다.
1. 테이블 A와 B을 열어 쿼리로 A, B의 부품 번호에 대해 내부조인을 건다 -> 두 테이블의 동일한 부품번호에 해당하는 부품 정보를 볼 수 있음.
2. 테이블 A와 B를 열어 쿼리로 A에 가중치를 두어 외부조인을 한다.
3. 테이블 A와 B를 열어 쿼리로 B에 가중치를 두어 외부조인을 한다.
4. 이제 1,2,3에서 나온 결과물 쿼리들을 엑셀로 뽑아서 하나의 시트에 붙여넣기 한다.
이때 문제는 4번과 같이 하게되면 2번과 3번에 각각 1번 결과가 중복되어 있다는 것입니다. 따라서 테이블 C를 만드는 첫번째 조건에 위반됩니다.
엑세스 중급 2 강의를 듣다보니 폼을 만들어서 조건부 서식 이라는 기능이 있던데, 혹시 제가 4번 절차를 진행 하기 전에, 조건부 서식 기능으로 1번과 중복되는 값을 각각 2,3번에서 붉은색깔로 표시하게 만들 수 있는지요 ?
답장 꼭 부탁드립니다. 감사합니다. :)
첨부하신 엑셀 파일을 보니, A와 B에 중복된 Parts No가 없는데요? 그래서 예제를 만들다가 그만 두었습니다.
(ID 필드로 해도 마찬가지입니다)
지금 작성하신 방법으로 하면, 당연히 교집합이 생기겠지요.
다음과 같이 하면 안되는 것인가요?
1. A에는 있는데, B에는 없는 목록을 구합니다. --> 이것이 순수한 old 데이터이겠죠.
2. B와 1의 결과물을 수직적으로 합칩니다.
이렇게 하면, B는 순수한 new 데이터라고 보고, 1과 합치면 데이터 중복이 생기지 않을 것입니다.
윈드님이 말씀하신것 처럼.. 데이터 가공을 하시더라도, 중복된 데이터가 있는 예제를 만들어 주심이 좋을 것 같습니다.
accdb를 사용하시나요? 만들고 계신 파일을 보여주시면 일반적인 예시가 아닌 더 좋은 해결방안을 드릴 수 있을 것 같습니다.