2012-03-30 3 views
1

열을 하나의 테이블로 병합하는 방법은 무엇입니까?tsql은 열을 하나의 테이블로 병합합니다.

 
declare @map_old table(ID int not null) 
insert into @map_old select 1 
insert into @map_old select 2 

declare @map_new table(ID int not null) 
insert into @map_new select 11 
insert into @map_new select 22 

declare @map(ID int not null, ID2 int not null) 

@map의 결과는 다음과 같아야합니다

 
ID ID2 
1 11 
2 22 

어떤 제안? 고마워!

+1

왜'1 11'가 아닌'1 22'? 테이블을 나란히 붙여 넣어야합니까? – danihp

+0

각 행마다 두 번째 테이블과의 관계가 필요합니다 ... 각 행은 동일한 행 수를가집니다. – c0d1ng

답변

1

다음과 같이 같은 테이블에 ID를 사용 할 수 있습니다

declare @map_old table(iden int identity,ID int not null) 
insert into @map_old select 1 
insert into @map_old select 2 

declare @map_new table(iden int identity,ID int not null) 
insert into @map_new select 11 
insert into @map_new select 22 

declare @map table(ID int not null, ID2 int not null) 

insert into @map 
select t.ID, t2.ID from @map_old t join @map_new t2 on t.iden = t2.iden 
+0

정확히 내가 무엇을 찾고 있었는지 ... – c0d1ng

1

이 테이블 행의 동일한 금액을 가질 것이라고 확신합니다.

그리고 어쩌면 이런 식으로 뭔가 :

;WITH CTE 
AS 
(
    SELECT 
     ROW_NUMBER() OVER(ORDER BY ID) AS RowNbr, 
     mapNew.ID 
    FROM 
     @map_new AS mapNew 
),CTE2 
AS 
(
    SELECT 
     ROW_NUMBER() OVER(ORDER BY ID) AS RowNbr, 
     mapOld.ID 
    FROM 
     @map_old AS mapOld 
) 
INSERT INTO @map(ID,ID2) 
SELECT 
    CTE.ID, 
    CTE2.ID 
FROM 
    CTE 
    JOIN CTE2 
     ON CTE.RowNbr=CTE2.RowNbr 

SELECT * FROM @map 
관련 문제