Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用max筛选出重复行_Sql - Fatal编程技术网

Sql 使用max筛选出重复行

Sql 使用max筛选出重复行,sql,Sql,我有一个表,在大多数情况下,是个人用户。偶尔会有一个联合用户。对于联合用户,表中的所有字段将与主用户完全相同,但b分数字段除外。我希望每个帐户只显示一行数据,并使用最高b分数来决定在联合帐户中使用哪一行(因此仅显示最高分数) 我以为这会是一个简单的问题 SELECT DISTINCT accountNo, MAX(bscore) FROM table, GROUP BY accountNo 但是我仍然得到了多行关节您似乎想要ANSI标准的row\u number()函数: select t.*

我有一个表,在大多数情况下,是个人用户。偶尔会有一个联合用户。对于联合用户,表中的所有字段将与主用户完全相同,但b分数字段除外。我希望每个帐户只显示一行数据,并使用最高b分数来决定在联合帐户中使用哪一行(因此仅显示最高分数)

我以为这会是一个简单的问题

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显示一条记录,这听起来像是您想要的,所以很混乱。