SQL:获得最高计数的完整记录

时间:2010-03-12 17:16:39

标签: sql ms-access

我正在尝试编写从下面的数据中生成所需结果的sql。

数据:

IDNum  Opt1 Opt2 Opt3 Count
1      A     A    E    1 
1      A     B    J    4
2      A     A    E    9
3      B     A    F    1
3      B     C    K    14
4      A     A    M    3
5      B     D    G    5
6      C     C    E    13
6      C     C    M    1

期望的结果:

IDNum  Opt1 Opt2 Opt3 Count
1      A     B    J     4
2      A     A    E     9
3      B     C    K     14
4      A     A    M     3
5      B     D    G     5
6      C     C    E     13

基本上我想为每个ID Num提供最高计数的完整记录。我试过做一个分组,但如果我按Opt1,Opt2,Opt3分组,这不起作用,因为它返回每个(ID Num,Opt2,Opt3,Opt4)组合的最高计数,这不是我想要的。如果我只按ID Num分组,我可以获得每个ID Num的最大值,但是我丢失了关于哪个(Opt1,Opt2,Opt3)组合给出这个计数的信息。

我觉得我以前做过这个,但我不经常使用sql,我不记得怎么做。有一个简单的方法吗?

3 个答案:

答案 0 :(得分:1)

修改 在澄清访问问题之前,这将起作用。我不知道是否支持此查询。


我认为这适用于SQL Server。

select * from data
inner join (select idnum, max(count) from data
            group by idNum )sub
on sub.IdNum=data.IdNum && sub.Count=data.Count

当然,如果你有两个具有相同计数的id,它将返回两行......

答案 1 :(得分:1)

这样的事情:

SELECT * FROM table AS t1
JOIN ( SELECT id, max(count) as Id FROM table GROUP BY id ) AS t2
ON t1.id = t2.id AND t1.id = t2.id

这假设没有idnum具有相同的最大数量,或者你将得到两个idnums

答案 2 :(得分:0)

尝试此查询:

SELECT * FROM my_table
GROUP BY IDNum
HAVING Count = MAX(Count)

它应该适用于Access,但我没有测试它。