MS Access SQL:聚合最小值但检索其他字段
Posted
技术标签:
【中文标题】MS Access SQL:聚合最小值但检索其他字段【英文标题】:MS Access SQL: Aggregating on Min Value but retrieving other fields 【发布时间】:2012-06-16 12:26:20 【问题描述】:这可能是一个非常简单的问题,但我不知道如何在 MS Access 中解决它。之前可能已经回答过了,但我一直没能找到。
我有一个包含 3 列的表:col1 是对象 ID,col2 和 col3 是测量值。我已经构建了一个查询,以便为每个对象我们在 col2 中获得相应的最小值。这适用于简单的分组查询。问题是当我尝试拉 col3(与找到最小值的行相关联)时,它将不再正确分组。
我一直在使用 group-by 子句并尝试将其分成几个查询,但到目前为止没有运气。
这是我拥有(左)和想要获得(右)的示例:
col1 col2 col3 ---> col1 minC2 col3 ---- ---- ---- ---- ---- ---- 1 0 1.8 1 0 1.8 1 1 1.4 2 2 2.5 2 4 1.1 3 1 7.6 2 6 4.7 2 2 2.5 3 4 3.3 3 1 7.6我希望这是有道理的。任何帮助/MS Access SQL 语法表示赞赏... 谢谢!
【问题讨论】:
简单地说,我想获取 col2 中最小值所在的行... 是的,那里有错字,我已经相应地更改了输出,谢谢。 【参考方案1】:假设你想要得到的第二行是 [2 2 2.5],这就是你要找的:
select a.col1, a.colm, m.col3
from
(
select col1, min(col2) as colm
from test
group by col1
) as a
inner join test m on a.col1 = m.col1 and a.colm = m.col2
【讨论】:
【参考方案2】:您可以使用子查询:
select t.col1, tt.col2 , tt.col3
from (
SELECT col1, Min(col2) AS mcol2
FROM Tmp
group by col1) t, tmp tt
where t.col1 = tt.col1 and t.mcol2 = tt.col2
【讨论】:
以上是关于MS Access SQL:聚合最小值但检索其他字段的主要内容,如果未能解决你的问题,请参考以下文章
MS Access Sql 查询不是聚合函数的一部分。使用计数功能