MS Access比较两个表

时间:2013-11-30 12:25:13

标签: sql ms-access comparison

我有两张桌子,我比较代表销售,TY与LY。在比较两个表格时,我今年有新的代表和去年离开公司的代表。

当我运行查询时,我只会获得仍在公司的代表的结果。我想要所有,有关如何通过这样做的任何建议?我尝试创建一个包含所有reps名称并创建ac连接的表,但这不起作用。

1 个答案:

答案 0 :(得分:1)

如果要查看两个表中的所有销售代表,那么您将需要使用OUTER JOIN。遗憾的是,Access SQL不直接支持FULL OUTER JOIN构造,因此您需要通过两个LEFT JOIN的UNION来模拟它。

例如,给定表[LY] ......

SalesRep  TotalSales
--------  ----------
OldGuy          3000
SameGuy         5000

...和[TY] ......

SalesRep  TotalSales
--------  ----------
NewGuy          2000
SameGuy         6000

...查询

    SELECT 
        TY.SalesRep, 
        TY.TotalSales AS TY_Sales,
        Nz(LY.TotalSales, 0) AS LY_Sales
    FROM
        TY LEFT JOIN LY ON TY.SalesRep = LY.SalesRep
UNION ALL
    SELECT 
        LY.SalesRep, 
        0 AS TY_Sales,
        LY.TotalSales AS LY_Sales
    FROM
        LY LEFT JOIN TY ON TY.SalesRep = LY.SalesRep
    WHERE TY.SalesRep IS NULL

返回

SalesRep  TY_Sales  LY_Sales
--------  --------  --------
NewGuy        2000         0       
SameGuy       6000      5000    
OldGuy           0      3000