Sql 连接表示Access中随时间变化的两个表
我正在使用Access并尝试连接两个具有以下结构的表: 表1:Sql 连接表示Access中随时间变化的两个表,sql,ms-access,join,Sql,Ms Access,Join,我正在使用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
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
我从互联网上尝试了这么多解决方案(外部连接),但我没有得到所需的结果!如果有人能帮我解决这个问题,我将不胜感激 不幸的是,Access不支持完全外部联接。您需要执行两个联接,然后合并表
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;
这将使您的桌子没有特定的顺序。如果字段为空,则NZ(T1,0)
将T1替换为0
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
要在最终查询中获得所需的确切字段名,您必须将查询包装在另一个查询中-您不能将callNZ(T1,0)用作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
)
我不知道如何得到你要的排序单 请看一下left join and coalesce()。access中的coalesce alternative非常感谢,但我刚刚在access中尝试了这一点,在FROM子句中出现语法错误,并且突出显示了关键字FULL?