2013-07-17 54 views
2

我有一个数据库为每个事务使用一个唯一的ID。交易编号是一年后面的两位数字,后面跟着一个四位数的连续编号(例如0100至9999)。该数字在每年年初重置为0100。并非所有的数字都是每年使用的。例如,2012年的最后一笔交易是12-0409,2011年是11-0500。这些数字当前不是在数据库中生成的,而是手动创建的。我正在让他们切换到使用自动化,但同时我必须创建补丁来修复错误。带限制的不匹配查询

在数据库中,我有一个表和一个查询。查询([Offer Check])列出了交易ID([HL#]),并以两种格式显示最后四种格式,一种是数字格式([NumList]),另一种是文本格式([TextList])。该表是列出0100和9999之间所有数字的基本表格。我试图创建一个查询,以便识别哪些交易ID缺失,即我有13-0250和13-0252,但不是13-0251。我可以创建标识哪些数字缺失的查询,但是它也列出了最新的交易ID之后的所有数字。我该如何限制查询到当前的最大交易ID#?

这是我到目前为止。

SELECT YearlyOfferIds.YOID 
FROM 
    YearlyOfferIds 
    LEFT JOIN [Offer Check] 
    ON YearlyOfferIds.[YOID] = [Offer Check].[TextList] 
WHERE ((([Offer Check].TextList) Is Null)); 

而且我尝试添加或东西做同样的事情。

SELECT Max([Offer Check].NumList) AS MaxOfNumList 
FROM [Offer Check]; 

回答

2

你的第二查询,SELECT Max(...,可以翻译成一个DMax表达。

DMax("NumList", "Offer Check") 

我的直觉是,你可以使用DMax在你第一次查询的WHERE子句来限制行从YearlyOfferIds返回。不幸的是,我不知道YearlyOfferIds字段的名称,您想要将其与最大值[Offer Check].NumList进行比较。所以我只会打电话给some_field

WHERE 
     YearlyOfferIds.some_field <= DMax("NumList", "Offer Check") 
    AND [Offer Check].TextList Is Null 
+0

非常感谢。这并没有完全解决,但那是因为我的数据。它使我能够利用有限的知识完成工作。大家知道,YearlyOfferIds表中只有一个字段。它被称为YOID。 – Dragonsen