2012-11-19 5 views
0

테이블 병합에 대한 예제를 많이 읽었지만 대부분의 사람들은 결합 가능한 컨텐츠를 가지고 있습니다. 나는 조인 할 수있는 데이터가 없다. FULL JOIN을 사용하면 같은 이름을 가진 여러 컬럼과 해당 쿼리에 데이터가없는 NULL을 남겨둔다.두 테이블의 결과를 공통 데이터없이 통합 테이블에 결합하기

CREATE TABLE #tmpBus 
(
id varchar(50), 
partnumber varchar(400), 
attributecname nvarchar(255), 
attributevalue nvarchar(1700), 
assetfilename varchar(85), 
orderby varchar(10) 
) 

CREATE TABLE #tmpBus1 
(
id varchar(50), 
name varchar(500), 
url varchar(2550), 
assetfilename varchar(850), 
orderby varchar(10) 
) 

CREATE TABLE #tmpBus2 
(
partnumber varchar(400), 
attributecname varchar(255), 
attributevale varchar(1700), 
orderby varchar(10), 
assetfilename varchar(850), 
name varchar(500), 
url varchar(2550) 
) 

INSERT INTO #tmpBus exec getSectionNewData 5665976; 

INSERT INTO #tmpBus1 exec getSectionFeaturedData 5665976; 

SELECT DISTINCT * FROM #tmpBus tb 
FULL JOIN #tmpBus1 tb1 
ON tb.partnumber=tb1.name 

DROP TABLE #tmpBus 
DROP TABLE #tmpBus1 
DROP TABLE #tmpBus2 

내 목표는이 개 임시 테이블의 데이터 (#tmpBus & # tmpBus1) 나는 하나 개의 통합 테이블 (# tmpBus2)로 만들었을 얻는 것입니다. 내가 생각할 수있는 방법으로 모든 유형의 참여 및 그룹을 시도했습니다. 위의 코드 출력 결과를 보여주는 스크린 샷입니다. NULL을 확인하십시오. 각 테이블의 해당 값을 사용하여 # tmpBus2에 플랫 테이블을 가져 오려고합니다. 따라서 id, assetfilename 및 orderby 필드는 2 개의 별도 열 대신 통합되며 orderby 열에 따라 정렬 할 수 있습니다.

enter image description here

어떤 도움 나 슈퍼 도움이 될 것입니다 올바른 방향으로 가고 점점.

+1

이 소스 테이블에서 항목의 모든 조합으로 당신을 조인? 그렇다면 크로스 조인을 위해 가십시오 (성명서에 필요 없음). http://msdn.microsoft.com/en-us/library/ms190690(v=sql.105).aspx – JohnLBevan

+0

예, 이미 교차 결합을 시도했으며 출력은 위와 같습니다. –

답변

2

를 사용하여 간단한 UNION은

SELECT id, partnernumber, attributecname, attributevalue, assetfilename, orderby, NULL AS url 
FROM #tmpBus tb 
UNION 
SELECT id, name, NULL, NULL, assetfilename, orderby, url 
FROM #tmpBus1 tb1 
ORDER BY orderby 
+1

고맙습니다. 나는이 게시물 이전에 UNION을 시도했지만 당신이 가지고있는 방식대로는하지 않았습니다. 다시 한 번 감사드립니다! –

+0

@Hather Roberts는 좋은 대답을 위해 upvote;) –

0

당신은 단지 하나의 사람에 여러 열을 통합하려는 경우이 시도 할 수 있습니다 : 나는 훨씬 더 도움이되지 수있는 데이터/요구 사항에 대한 자세한 내용을 모른 채

SELECT 
--isnull(tb.id, tb1.id)       Id 
    isnull(tb.partnumber, tb1.name)    PartNumber 
, tb.attributecname        AttributeCName 
, tb.attributevalue        AttributeValue 
, isnull(tb.orderby, tb1.orderby)    OrderBy 
, isnull(tb.assetfilename, tb1.assetfilename) AssetFilename 
, isnull(tb1.name, tb.partnumber)    Name 
, tb1.url          URL 
FROM #tmpBus tb 
FULL JOIN #tmpBus1 tb1 
ON tb.partnumber=tb1.name 

을 - 당신이 할 수있는 경우를 (또는 여기 누군가) 사용자의 요구를 충족시키기 위해 쿼리를 조정할 수 있지만 일부 샘플 입력 데이터 &을 제공하십시오.

관련 문제