2017-09-17 1 views
1

mssql에서 outer join을 수행하면 조인 할 열이 결합되지 않습니다. 여기 외부 조인은 조인 열의 복사본을 여러 개 반환합니다.

내 코드입니다 :

select top 10 * from customer_behaviour_1P2014 full outer join 
customer_behaviour_2P2014 on customer_behaviour_1P2014.customer_identifier = customer_behaviour_2P2014.customer_identifier full outer join 
customer_behaviour_3P2014 on customer_behaviour_2P2014.customer_identifier = customer_behaviour_3P2014.customer_identifier 

이 3 열 대신 내가 잘못 뭐하는 거지 1.

의, customer_identifier를 표시 반환?

차이가 있다면 고객 식별자를 각 테이블의 색인으로 사용했습니다.

답변

2

모든 3 개의 테이블에서 모든 열을 선택하고 각 테이블의 열은 customer_identifier (ON 절에서 추론 됨)입니다.

customer_identifier 열은 다른 표의 값입니다. 일치하는 값은 일치하거나 일치하는 행이 없을 때 NULL입니다.

값을 반복하지 않으려면 * 대신 명시적인 열 목록을 지정하십시오.

SELECT <other-columns>, 
COALESCE(customer_behaviour_1P2014.customer_identifier, customer_behaviour_2P2014.customer_identifier, customer_behaviour_3P2014.customer_identifier) AS customer_identifier 
FROM ... 
+0

하여 모든 열을 선택 만 customer_identifier 한 번에 선택할 수있는 방법은 무엇입니까 : 대신 3 개 별도의 customer_identifier 컬럼의 첫 번째 NULL이 아닌 값을 반환하는 COALESCE 기능을 사용할 수 있습니까? – user1871528

+0

@ user1871528, 제 답변에 추가했습니다. –