원하는 결과를 얻기 위해 이전에 전체 외부 조인을 사용했지만 간단한 조인을 수행 할 수 없기 때문에 개념을 완전히 이해하지 못할 수도 있습니다.
2 개의 필드가있는 2 개의 테이블 (t1 및 t2라고 함)이 있습니다.
t1
Policy_Number Premium
101 15
102 7
103 10
108 25
111 3
t2
Policy_Number Loss
101 5
103 9
107 20
내가하려고하는 것은 두 테이블과 Policy_Number에서 Premium과 Loss의 합계를 얻는 것입니다. 내가 사용하는 코드는 다음과 같습니다
select sum(premium) Prem_Sum, sum(Loss) Loss_Sum, t1.policynumber
from t1 full outer join t2 on t1.policynumber = t2.policynumber
group by t1.policynumber
위의 코드는 정확한 총계를 반환하지만 "NULL"policy_number에서 policy_number가 일치하지 않는 모든 레코드를 그룹화합니다.
내 결과는 다음과 같습니다
Policy_Number Prem_Sum Loss_Sum
107 NULL 20
111 3 NULL
101 15 5
기타.....
아래에 표시된 것처럼 NULL policy_number를 표시하는 결과를 원하지 않습니다 (Null policy_number와 같은 것이 없기 때문에 두 테이블의 policy_number가 일치하지 않는 경우의 총계입니다).
Policy_Number Prem_Sum Loss_Sum
NULL 35 NULL
t1.policy_number 대신 t2.policy_number로 선택하고 그룹화하면 아래와 같은 레코드가 나타납니다.
Policy_Number Prem_Sum Loss_Sum
NULL NULL 20
다시, Prem_Sum 또는 Loss_sum에서 NULL을 보지 않아도 Policy_Number에서 NULL을 원하지 않습니다. 내 결과는 다음과 같습니다
Policy_Number Prem_Sum Loss_Sum
107 NULL 20
111 3 NULL
101 15 5
요법 .....
나는 완전한 외부 조인이 이것을 달성 할 것이라고 생각했지만 뭔가 빠진 것 같습니다. 하위 쿼리로 t1.policy_number와 t2.policy_number를 모두 선택하고 그룹화 한 다음 외부 쿼리 또는 CASE에서 CASE를 수행 할 수 있을까요? 나는 이것이 복잡해야한다고 생각하지 않습니다.
어떤 아이디어 나 조언이 있습니까?