缺少周视图

时间:2014-11-10 17:04:21

标签: sql-server-2008-r2

我有2个表需要比较才能找到丢失的数据。

表A:定义表

Year, Week, cmp_code, [other columns]

表B:现金收据

Year, WeekNo, FranchiseID

TableA具有我们应具有数据的ID周和年的所有可能组合。 TableB是我们实际拥有的数据。我需要列出我们还没有的东西,所以B-A的三角洲。如何构造查询以查找这些缺失值?

2 个答案:

答案 0 :(得分:1)

您可以使用except集合运算符返回两组之间的差异:

SELECT [Year], [Week], cmp_code FROM TableA
EXCEPT
SELECT [Year], [WeekNo], FranchiseID FROM TableB

这将返回TableA中没有TableB中完全匹配的行。使用相关not exists查询或left join可以获得相同的结果。 not exists应该表现最佳。

答案 1 :(得分:1)

您可以使用NOT EXISTS

SELECT  [Year], [Week], ID 
FROM    TableA AS a
WHERE   NOT EXISTS
        (   SELECT  1
            FROM    TableB AS b
            WHERE   b.[Year] = a.[Year]
            AND     b.[Week] = a.[Week]
            AND     b.ID = a.ID
        );