안녕하세요~
무더운 여름 잘 보내시고 계신가요? ^^
저는 아직 휴가를 안갔네요. ㅎㅎ
본론으로 들어가서...
각 테이블로부터 count한 내용을 비교한 값을 확인하였는데,
서로 상반된 값에 대해 그 내용을 알고 싶어서 문의 드립니다.
즉, A 테이블에 1024개 카운트(건수)를 확인하였고,
B 테이블에는 1020개 카운트(건수)를 확인하였습니다.
이 4개의 부합되지 않은 내용을 보고 싶은데, 어떻게 처리하여 화면상으로 볼 수 있을까요?
너무 간단한? 질문이기도 하고 어렵기도 해서 문의 드려봅니다.
그럼 고수님의 comment 부탁 드립니다.
Lonnie 님
"겸댕2후니" 님이 주신 Query 는
- A 의 모든 data 중, B 에 존재하는 data 들을 빼고 조회하는 방법이니,
- A table count 가 1020건, B table count 가 1000건 인 경우
- A minus B 가 22 건이면, A 와 B 의 998 건 (1020 - 22 = 998) 만 일치해서 일 겁니다. (1000 건이 동일한 것이 아니라, 998 건만 동일)
"박영식" 님이 주신 Query 는
- A 와 B 테이블에 PK 컬럼이 잘 설정된 경우에 차이를 정확하게 조회 하는 방법이니
- 만약 159건 이나 조회 된다면, A 와 B 테이블이 Key 컬럼을 기준으로 Data 가 잘 들어가 있는 상태가 아니여서 입니다.
==> 정확한 분석? 은 Key 컬럼으로 Data 정합성이 충족되야 할 것 같구요., 원하시는 내용은 "겸댕2후니" 님 방법으로 찾으시는 게 현재는 더 나아 보입니다.
with t1 as ( select '1' code, 'a' val from dual union all select '2' code, 'b' val from dual union all select '3' code, 'c' val from dual union all select '4' code, 'd' val from dual union all select '5' code, 'e' val from dual ) , t2 as ( select '3' code, 'k' val from dual union all select '4' code, 'd' val from dual union all select '5' code, 'e' val from dual union all select '6' code, 'f' val from dual union all select '7' code, 'g' val from dual ) select t1.code code1, t1.val val1, t2.code code2, t2.val val2 from t1 full outer join t2 on (t1.code = t2.code and t1.val = t2.val) where nvl(t1.code,'*') != nvl(t2.code,'*') and nvl(t1.val,'*') != nvl(t2.val,'*') 일치해야하는 조건을 on 절과 where 절에 기술한 후 무엇이 다른지 검사해보세요.