2017-05-10 2 views
1

두 개의 뷰 : TableA와 TableB는 서로 매우 유사한 정보를 가지고 있지만 몇 개의 고유 한 열이 있습니다. 클라이언트 ID, 송장 번호, 날짜, 년도 및 충전 설명은 단순히 서로의 상부에 적층 확인 :SQL 두 개 뷰를 하나로 병합

Here are my two views and their table structure

나는 원래 열이 look like this

에 최종 결과를 싶습니다. 청구 유형, 청구 금액, 책임 금액 및 합계도 서로 쌓을 수 있지만 해당보기에 값이없는 경우 기본값은 null (또는 아무 것도 없음)입니다.

내가해야 할 일은 합집합 (?)에 대해 일부 열 (동일하게 이름이 지정된 열)을 갖지만 나머지는 그대로 유지하고 이들 값을 채울 값이없는 경우 nulls (또는 더 나은, 아무것도). 나는 한 개의 테이블로 가져 오려고 노력 중이므로 두 개의 개별 데이터 소스 대신 하나의 데이터 소스에서 피벗 테이블을 사용할 수 있습니다.

불쌍한 포맷팅에 대해 유감스럽게 생각합니다. 사용법을 올바르게 사용하는 방법을 찾지 못해 이미지를 사용했습니다.

+0

힌트 : 설명 주셔서 감사합니다'JOINS' – Sami

답변

0

모든 열이 일치하는 경우 UNION ALL을 사용하여 단일 결과 집합으로 2 개의 쿼리를 반환 할 수 있습니다. 귀하의 경우 열이 완전히 일치하지 않지만 모든 열 불일치에 대해 null이 표시되므로이 경우 null과 열 이름 만 표시하면됩니다. 당신은 다음과 같이 뷰를 만들 수 있습니다

SELECT ClientID, InvoiceNumber, CheckDate, Year, ChargeDescription, 
     NULL as 'ChargeType', NULL as 'Total', BilledAmount, LiabilityAMount 
FROM TABLEA 
UNION ALL 
SELECT ClientID, InvoiceNumber, CheckDate, Year, ChargeDescription, 
     ChargeType, Total, NULL as 'BilledAmount', NULL as 'LiabilityAmount' 
FROM TABLEB 
+0

를 사용합니다. NULL 값을 강제로 적용하고 UNION ALL을 사용할 수 있다는 것을 알지 못했습니다. 지금 나에게 의미가있다. – Jordan

0

('총'과 같은 예를 들어, NULL은) :

create view yourview as 
    select clientid, [invoice number], [check date], [year], [Charge Description], Null as [Charge Type], Null as Total, [Billed Amount], [Liability Amount] from tableA 
    union all 
    select clientid, [invoice number], [check date], [year], [Charge Description],[Charge Type], Total, Null as [Billed Amount], Null as [Liability Amount] from tableB 
관련 문제