我使用以下查询:
SELECT [ActionItems].AutoID, Min([ActionItems].[Action Status]) AS [MinOfAction Status]
FROM [ActionItems]
GROUP BY [ActionItems].AutoID;
我为字段[Action Status]
设置了自定义排序,此查询称为"最紧急行动项目"对于任何给定的AutoID,应该检索那个排名最高的那个(AutoID与主表([Students]
中的相同);如果有意义的话,这个[ActionItems]
表是次要的
嗯,它有效。但是[AutoID]
字段本身没有帮助 - 只将它与主表中的记录匹配。我还需要为表中的每个记录显示表[ID]
中的唯一[ActionItems]
,因为[Action Status]
不是唯一的(只有三个可能的值)。我尝试使用" Group By"添加[ID]
字段。或"表达"甚至" MAX"但没有人返回所需的结果:
[AutoID]
的所有记录,即
没用。您的查询不包含指定的表达式' ID'作为集合函数的一部分。
[AutoID]
只显示一条记录(根据需要!),但[ID]
不一定与正确的[Action Status]
匹配,因此它也没有帮助。< / LI>
如果可能的话,我更愿意展示的不仅仅是[ID]
字段,但我认为这至少足以将此查询用作其他更广泛查询的帮助程序。
我怀疑子查询可能有用,但这是非常陌生的领域...我确实在这里找到了一些其他类似的问题,但我找不到任何以我能理解的方式解释答案的内容。
我希望一切都有道理;非常感谢任何帮助。
编辑:经过一些搜索后,我发现这与此问题几乎相同:MS Access SQL: Aggregating on Min Value but retrieving other fields
我会继续尝试提出一个解决方案,如果我这样做的话会在这里发布,但是如果社区认为这应该被关闭,我理解这一点。
答案 0 :(得分:0)
以下是我用来获得所需结果的代码:
SELECT T.AutoID, T.[Most Urgent Action Status], A.[ID]
FROM
(
SELECT AutoID, Min([Action Status]) as [Most Urgent Action Status]
from [ActionItems]
GROUP BY AutoID
) as T
INNER JOIN [ActionItems] A ON T.AutoID = A.[AutoID] AND T.[Most Urgent Action Status] = A.[Action Status]
我不知道用正确的术语来描述这里发生了什么,但它让我觉得我只是加入常规查询到子查询,子查询基本上是我在我的问题中提到的那个。
在确认显示我想要的内容之后,我在[ActionItems]
和[AutoID]
字段中进行了第二次查询,将[ID]
表加入此查询;我还在连接中添加了一些其他传记信息,以获得更多上下文。
再一次,这基本上是这个问题答案的修改版本:MS Access SQL: Aggregating on Min Value but retrieving other fields
现在,我了解它的工作原理,看起来非常直观。我希望这有助于其他人!