我有一张桌子,大部分情况下是个人用户。有时会有一个联合用户。对于联合用户,表中的所有字段都将与主要用户完全相同,除了b分数字段。我只想显示每个帐户的一行数据,并使用最高的b分数来确定当它是联名帐户时要使用哪一行(因此只显示最高分)
我认为这将是一个简单的
SELECT DISTINCT accountNo, MAX(bscore) FROM table, GROUP BY accountNo
但是我仍然有多个关节行
答案 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