MS Access SQL添加非聚合字段进行聚合

时间:2016-10-21 23:23:05

标签: sql ms-access aggregate-functions

我有下表:

tableX

+----+----+----+
| f1 | f2 | f3 |
+----+----+----+
|  1 | a  | 12 |
|  2 | a  | 54 |
|  3 | b  | 23 |
|  4 | b  | 18 |
|  5 | b  | 75 |
+----+----+----+

我想基于f3中关于f2的最高值来缩小表格,以便得到:

+----+----+----+
| f1 | f2 | f3 |
+----+----+----+
|  2 | a  | 54 |
|  5 | b  | 75 |
+----+----+----+

我可以使用:

来减少f2和f3
SELECT f2, Max(f3)
FROM tableX
GROUP BY f2;

我认为一个解决方案接近下面(使用别名和自联接)但我正在努力让它工作 - Access抱怨f1不是聚合的一部分。

SELECT a.f1,a.f2, Max(a.f3)
FROM tableX t1
Inner Join tableX t2
On t1.f1 = t2.f1 
GROUP BY t1.f2;

1 个答案:

答案 0 :(得分:1)

你走在正确的轨道上。

以下是我提出的建议:

select x.f1, x.f2, x.f3
from tablex x
join (
select f2, max(f3) as f3
from tableX
group by f2
  ) j on j.f2 = x.f2 and j.f3 = x.f3

我做了一个小小的SQL小提琴。 http://sqlfiddle.com/#!9/7d4ac4/3

它不以ms-access为目标,但它应该可以工作。

相关问题