Sql server 2008 r2 失踪周视图
我有两个表,我需要比较,以找到丢失的数据 表A:定义表Sql server 2008 r2 失踪周视图,sql-server-2008-r2,Sql Server 2008 R2,我有两个表,我需要比较,以找到丢失的数据 表A:定义表 Year, Week, cmp_code, [other columns] 表B:现金收入 Year, WeekNo, FranchiseID 表A列出了所有可能的ID周和年组合,我们应该有数据。表B是我们实际拥有的数据。我需要列出我们还没有的,所以B-A的增量。我如何构造查询来查找这些缺失的值 您可以使用exceptset操作符返回两个集合之间的差异: SELECT [Year], [Week], cmp_code FROM Tabl
Year, Week, cmp_code, [other columns]
表B:现金收入
Year, WeekNo, FranchiseID
表A列出了所有可能的ID周和年组合,我们应该有数据。表B是我们实际拥有的数据。我需要列出我们还没有的,所以B-A的增量。我如何构造查询来查找这些缺失的值 您可以使用
except
set操作符返回两个集合之间的差异:
SELECT [Year], [Week], cmp_code FROM TableA
EXCEPT
SELECT [Year], [WeekNo], FranchiseID FROM TableB
这将返回TableA中与TableB中不完全匹配的行。使用相关的不存在
查询或左连接
可以获得相同的结果。不存在
的性能最好。您可以使用
为了列名称的准确性,我编辑了OP。名字是什么重要吗?这1对1匹配吗?不,名称不重要,唯一重要的是每个位置的列可以直接比较,也可以通过隐式转换进行比较。但列数必须相同。啊,好的。我最终需要的A专栏比B专栏更多。谢谢你的帮助!后来我发现我需要从TableA中包含比TableB更多的列。这个答案最终更符合我的需要,尽管两者都能起作用。
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
);