2013-05-13 76 views
2

我有一個以下任務:我有一個過程中的兩個單列表,他們都有相同數量的行。我想「合併」他們,所以我得到一個結果表與2列。我有一些簡單的方法呢?TSQL - 合併兩個表

在最壞的情況下,我可以嘗試添加主鍵,並使用INSERT INTO ... SELECTJOIN,但它需要我已有的代碼有很大的變化,所以我決定問你們。

只是爲了解釋我的答案,下面是例子。我有以下表格:

tableA 
col1 
---- 
1 
2 
3 
4 

tableB 
col2 
---- 
a 
b 
c 
d 

Resulting table: 
col1 | col2 
1 | a 
2 | b 
3 | c 
4 | d 
+0

只是在下面解釋我的答案。我有以下表格: – Moby04 2013-05-13 17:30:19

+0

在一般收集條款中,這是兩個集合的「zip」。 (想想這就像你的夾克上的拉鍊,而不是一個壓縮文件。)這個概念的.NET和Ruby實現甚至被稱爲「Zip」。 – GalacticCowboy 2013-05-13 17:49:28

回答

9

你可以這樣做:

SELECT t1.col1, t2.col1 AS col2 
INTO NewTable 
FROM 
(
    SELECT col1, ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS RN 
    FROM table1 
) AS t1 
INNER JOIN 
(
    SELECT col1, ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS RN 
    FROM table2 
) AS t2 ON t1.rn = t2.rn 

這將創建一個全新的表NewTable與兩列從兩個表:

| COL1 | COL2 | 
--------------- 
| 1 | a | 
| 2 | b | 
| 3 | c | 
| 4 | d | 

看到它在此採取行動:

+0

不是。他們沒有直接的關係(都只有一列有不同的值),但我知道第一行涉及第一行,第二行和第二行等等。我知道使用CURSOR或WHILE循環很容易,但由於效率,我無法使用它。至於加入,我需要添加主鍵列,我想避免... – Moby04 2013-05-13 17:28:43

+0

@ Moby04 - 好吧,對不起。看我的編輯。假設它們具有相同的行數。 – 2013-05-13 17:31:52

+0

我會在早上檢查一下,但看起來很有希望。謝謝:) – Moby04 2013-05-13 17:34:38