加入2个数据集时出现问题

时间:2015-02-20 18:36:53

标签: sql join

我有两个数据集如下:

1:

+---------------------------+
|  Id | Col1 | Col2 | Col3  |
+---------------------------+
| 1 | abc | 0  | 01/01/2010 |
| 2 | def | 10 | 10/10/2011 |
+---------------------------+

2:

+-------------------------------------------+
|    Id   |   Col4 |    Col5 |      Col6    |
+-------------------------------------------+
|    1    |    abc |    0    |   01/01/2010 |
|    5    |    xyz |    12   |    5/6/2013  |
+-------------------------------------------+

现在我想将这两者合并为一个数据集,显示如下:

+----------------------------------------------------------------------+
|  ID  |   Col1  |    Col2  |   Col3      | Col4  |  Col5 |  Col6      |
+----------------------------------------------------------------------+
|   1  |    abc  |    0     |  01/01/2010 |  abc  |   0   | 01/01/2010 |
|   2  |    def  |    10    |  10/10/2011 |  null | null  | null       |
|   5  |    null |   null   |  null       |  xyz  |   12  | 5/6/2013   |
+----------------------------------------------------------------------+

问题不是数据集1中的所有ID都在数据集2中,反之亦然。我需要的是来自数据集1和2的所有数据,只有1和2中的公共数据,如上所示,2转换为1。我用过烟斗作为分离器。

非常感谢投入。我尝试了所有的东西,如全外连接,内部连接,CTE等 - 没有任何工作。

CREATE TABLE #TEMP1 (ID INT, Col1 VARCHAR(100), Col2 INT, Col3 DATETIME)

CREATE TABLE #TEMP2 (ID INT, Col4 VARCHAR(100), Col5 INT, Col6 DATETIME)

INSERT INTO #TEMP1 VALUES (1,'abc',0,'1/1/2010')

INSERT INTO #TEMP1 VALUES (1,'def',0,'1/1/2010')

INSERT INTO #TEMP2 VALUES (1,'abc',0,'1/1/2010')

INSERT INTO #TEMP2 VALUES (1,'def',0,'1/1/2010')

SELECT DISTINCT A.ID,A.Col1,A.Col2,A.Col3,B.Col4,B.Col5,B.Col6
FROM #TEMP1 A
FULL OUTER JOIN #TEMP2 B ON A.ID = B.ID

感谢。

1 个答案:

答案 0 :(得分:0)

尝试使用以下SQL:

select t1.Id , Col1 , Col2 , Col3 , Col4 , Col5 , Col6
from temp1 t1 left join temp2 t2
on t1.Id=t2.Id
union
select t2.Id , Col1 , Col2 , Col3 , Col4 , Col5 , Col6
from temp1 t1 right join temp2 t2
on t1.Id=t2.Id

另外,我试着为你小提琴:

http://sqlfiddle.com/#!2/d60a1e/5