0

我已经工作了将近一周来研究这个问题并学习不同的 SQL 技术。我正在尝试在 Microsoft Access 的列表框中显示结果。我有列SQLIDofLoggers, JobNumber, DateDeployed, DateReturned, AHULocation, AccessPoint和两个组合框cboLoggerType and cboOrderBy来过滤这些结果(我使用 VBA 做了一个解决方法cboOrderBy,所以这就是它不在发布的 SQL 中的原因)。

我想要做的是只为每个不同的SQLIDofLogger. 为了确定每个记录中的哪一条记录,SQLIDofLogger我想通过他们的DateReturn-eds 对它们进行排序并选择最新的但我不想显示它们DateReturn为空的任何记录,即它们仍在工作中

这是我目前拥有的 SQL,它提供了正确的信息,它只为每个记录器显示多个记录:

SELECT 
    (SELECT TOP 1 tblLoggers.LoggerID FROM tblLoggers WHERE tblLoggers.ID = tblUse.IDofLogger) AS SQLIDofLogger,
    (SELECT TOP 1 tblProjectList.JobNumber FROM tblProjectList WHERE( tblProjectList.ID = tblUse.IDofProject)) AS expr1,
    tblUse.DateDeployed, tblUse.DateReturned, tblUse.AHULocation, tblUse.AccessPoint
FROM tblUse
WHERE (
        (IIf([Forms]![frmByType].[cboLoggerType]<>'(ALL)',
            ((SELECT TOP 1 tblLoggers.LoggerType FROM tblLoggers WHERE tblLoggers.ID = tblUse.IDofLogger ORDER BY ID)=[Forms]![frmByType].[cboLoggerType]),
            '*')<>False
) AND (
        (tblUse.DateReturned) In (SELECT MAX(tblUse.DateReturned) FROM tblUse GROUP BY tblUse.IDofLogger))
)
GROUP BY tblUse.DateDeployed, tblUse.DateReturned, tblUse.AHULocation, tblUse.AccessPoint, tblUse.IDofProject, tblUse.IDofLogger
ORDER BY 1, tblUse.AHULocation;

我试图尽可能地清理这段代码。我知道这并不理想,但我只是不断地添加一些零碎的东西,并且它“有效”。我会发布我试图得到等式的最后一点的东西,但它们都不起作用(显然哈哈)。我不知道最好的行动方案(GROUP BY、 some JOINEXISTS等),所以我愿意接受任何建议。

4

0 回答 0