使用max过滤掉重复的行

时间:2018-07-11 20:42:53

标签: sql

我有一张桌子,大部分情况下是个人用户。有时会有一个联合用户。对于联合用户,表中的所有字段都将与主要用户完全相同,除了b分数字段。我只想显示每个帐户的一行数据,并使用最高的b分数来确定当它是联名帐户时要使用哪一行(因此只显示最高分)

我认为这将是一个简单的

SELECT DISTINCT accountNo, MAX(bscore) FROM table, GROUP BY accountNo

但是我仍然有多个关节行

2 个答案:

答案 0 :(得分:0)

您似乎想要ANSI标准的row_number()函数:

select t.*
from (select t.*, row_number() over (partition by accountNo order by bscore desc) as seqnum
      from t
     ) t
where seqnum = 1;

答案 1 :(得分:0)

这对我有用,也许不是最有效的。相关子查询。关键部分是accountNo = a.accountNo。

SELECT DISTINCT a.accountNo, (SELECT MAX(bscore) FROM table WHERE accountNo = 
a.accountNo)  bscore
FROM table a
GROUP BY a.accountNo