我正在使用Access,我正在尝试连接两个具有以下结构的表:
表1:
Col1 Col2 T1
C A 1.1
B A 1.2
D A 1.3
表2:
Col1 Col2 T2
C A 2.1
B A 2.2
E A 2.3
我希望结果表如下表所示:
Col1 Col2 T1 T2
C A 1.1 2.1
B A 1.2 2.2
D A 1.3 0
E A 0 2.3
我从互联网(外部联接)尝试了很多解决方案,但我没有得到所需的结果!如果有人可以帮我解决这个问题,我真的很感激!!!
答案 0 :(得分:1)
不幸的是,Access不支持FULL OUTER加入。您需要执行两个连接,然后将表联合起来。
这将使您的表格无特定顺序。如果字段为NULL,则NZ(T1,0)
将0替换为T1。
SELECT Table1.Col1
, Table1.Col2
, NZ(T1,0)
, NZ(T2,0)
FROM Table1 LEFT JOIN Table2 ON Table1.Col1 = Table2.Col1 AND Table1.Col2 = Table2.Col2
UNION SELECT Table2.Col1
, Table2.Col2
, NZ(T1,0)
, NZ(T2,0)
FROM Table2 LEFT JOIN Table1 ON Table2.Col1 = Table1.Col1 AND Table2.Col2 = Table1.Col2
要在最终查询中获得所需的确切字段名称,您必须将查询包装在另一个查询中 - 您不能使用调用NZ(T1,0) AS T1
,因为您将获得循环引用警告。
SELECT Col1, Col2, T1Col AS T1, T2Col AS T2
FROM (
SELECT Table1.Col1
, Table1.Col2
, NZ(T1,0) AS T1Col
, NZ(T2,0) AS T2Col
FROM Table1 LEFT JOIN Table2 ON Table1.Col1 = Table2.Col1 AND Table1.Col2 = Table2.Col2
UNION SELECT Table2.Col1
, Table2.Col2
, NZ(T1,0)
, NZ(T2,0)
FROM Table2 LEFT JOIN Table1 ON Table2.Col1 = Table1.Col1 AND Table2.Col2 = Table1.Col2
)
我不知道如何获得你所追求的排序顺序。
答案 1 :(得分:0)
SELECT COALESCE(A.Col1,B.Col1 ) AS Col1,
COALESCE(A.Col2,B.Col2 ) AS Col2,
COALESCE(A.T1,0) AS T1,
COALESCE(B.T2,0) AS T2
FROM TABLE1 A
FULL OUTER JOIN
TABLE2 B
ON A.Col1 = B.Col1;