【问题标题】:Joining two tables that represent changes over time in Access在 Access 中连接表示随时间变化的两个表
【发布时间】:2017-07-24 03:10:33
【问题描述】:

我正在使用 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

我尝试了很多来自互联网的解决方案(外部连接),但我没有得到所需的结果!如果有人能帮助我解决这个问题,我将不胜感激!!!

【问题讨论】:

标签: sql ms-access join


【解决方案1】:

很遗憾,Access 不支持 FULL OUTER 联接。您需要执行两个连接,然后合并表。

这将使您的表不按特定顺序排列。如果字段为 NULL,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

要在最终查询中获得所需的确切字段名称,您必须将查询包装在另一个查询中 - 您不能使用调用 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
            )  

我不知道如何获得您想要的排序顺序。

【讨论】:

    【解决方案2】:
    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; 
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 2021-08-15
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多