Sql 使用max筛选出重复行
我有一个表,在大多数情况下,是个人用户。偶尔会有一个联合用户。对于联合用户,表中的所有字段将与主用户完全相同,但b分数字段除外。我希望每个帐户只显示一行数据,并使用最高b分数来决定在联合帐户中使用哪一行(因此仅显示最高分数) 我以为这会是一个简单的问题Sql 使用max筛选出重复行,sql,Sql,我有一个表,在大多数情况下,是个人用户。偶尔会有一个联合用户。对于联合用户,表中的所有字段将与主用户完全相同,但b分数字段除外。我希望每个帐户只显示一行数据,并使用最高b分数来决定在联合帐户中使用哪一行(因此仅显示最高分数) 我以为这会是一个简单的问题 SELECT DISTINCT accountNo, MAX(bscore) FROM table, GROUP BY accountNo 但是我仍然得到了多行关节您似乎想要ANSI标准的row\u number()函数: select t.*
SELECT DISTINCT accountNo, MAX(bscore) FROM table, GROUP BY accountNo
但是我仍然得到了多行关节您似乎想要ANSI标准的
row\u number()
函数:
select t.*
from (select t.*, row_number() over (partition by accountNo order by bscore desc) as seqnum
from t
) t
where seqnum = 1;
这对我来说很有效,也许不是最有效的。相关子查询。关键部分是accountNo=a.accountNo
SELECT DISTINCT a.accountNo, (SELECT MAX(bscore) FROM table WHERE accountNo =
a.accountNo) bscore
FROM table a
GROUP BY a.accountNo
编辑您的问题并(1)提供样本数据;(2) 预期结果;(3) 适当的数据库标记。共享一些示例数据和所需结果。正如所写的,您的查询将为每个不同的accountno显示一条记录,这听起来像是您想要的,所以很混乱。