我正在尝试比较表格 T1 和视图 v1 ,并从表格T1中找到丢失的记录,并在点击按钮时在excel中显示结果。我正在尝试将情况包装到存储过程中并从vba代码中调用它。我不知道如何开始这个。虽然它有相同的数据,但两个表中的字段名称都不同。任何帮助都感激不尽。我尝试了很多代码示例,但是我没有实现我想要的......
表T1
alpha.FileID
主要政策编号
保险名称
查看V1
写到FileID
PolNO
InsName
这些是几列。虽然它们具有不同的字段名称,但数据是相同的。有时表 v1,中缺少记录,我需要比较两个表并找到表v2的缺失记录。
SELECT View_v1.[Insured Name]
FROM View_v1
WHERE View_v1.alpha.FileID NOT IN
(
SELECT Table_t1.FileID
FROM Table_t1
)
答案 0 :(得分:0)
except子句是最简单的方法:
SELECT FileID, PolNO, InsName
FROM View V1
EXCEPT
SELECT FileID, MasterPolicyNumber, InsuranceName
FROM Table T1
这将为您提供第一个选择中第二个选择中不存在的行(根据您所需的结果,您可以翻转顶部和底部选择)。只要数据类型和列数相同,每个字段的名称就不重要了。您的结果集将显示第一个选择的字段名称。
此外,由于您没有指定您的dbms," MINUS"用来代替" EXCEPT"对于某些dbms,比如Oracle。
答案 1 :(得分:0)
我相信这正是您根据自己的描述寻找的内容。
我正在比较每个字段,而不仅仅是FileID,因为您的示例似乎正在尝试。因此,如果您真的只想查找丢失的FileID,只需在条件中删除其他连接。
SELECT View_v1.FileID, View_v1.PolNO, View_v1.InsName
FROM View_v1
LEFT JOIN Table_t1
on View_v1.FileID = Table_t1.FileID
and View_v1.PolNO = Table_t1.[Master Policy Number]
and View_v1.InsName = Table_t1.[Insurance Name]
WHERE Table_t1.FileID is null