我有下表:
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和f3SELECT 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;
答案 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为目标,但它应该可以工作。