2012-06-16 47 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