2012-06-16 42 views
2

这可能是一个非常容易的问题,但我无法弄清楚如何在MS Access中解决它。它可能已经回答过,但我一直没能找到它。MS Access SQL:在最小值上聚合,但检索其他字段

我有一个3列的表:col1是一个对象ID,col2和col3是测量。我构建了一个查询,以便为每个对象获取col2中相应的最小值。这适用于简单的分组查询。问题是当我尝试拉col3(与最小值被发现的行相关联)时,它将不再进行分组 - 正确地进行。

我一直玩分组的条款,并试图分成几个查询,但迄今没有运气。

这里是我有什么(左)和希望得到(右)的例子:

 
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语法赞赏... 谢谢!

+1

简单地说,我想获得col2中最小值所在的行... – JBE

+0

是的,那里有错字,我已经相应地更改了输出,谢谢。 – JBE

回答

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 
+0

完美的作品,谢谢! – JBE

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