MS Access SQL:聚合最小值但检索其他字段

时间:2012-06-16 12:26:20

标签: sql ms-access ms-access-2003

这可能是一个非常简单的问题,但我无法理解如何在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语法表示赞赏... 谢谢!

2 个答案:

答案 0 :(得分:3)

假设你想得到的第二行是[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

答案 1 :(得分:0)

您可以使用子查询:

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