vdh*_*ant 3 sql t-sql sql-server
这是我拥有的数据样本.
-ID- -Rank- -Type- -Status- -Amount-
1142474 2 Under Offer Approved 23
1148492 1 Present Current 56
1148492 2 Under Offer Approved 3
2273605 1 Present Current 24
Run Code Online (Sandbox Code Playgroud)
如果ID相同,我只想要排名最高的记录.所以查询的最终结果.
-ID- -Rank- -Type- -Status- -Amount-
1142474 2 Under Offer Approved 23
1148492 1 Present Current 56
2273605 1 Present Current 24
Run Code Online (Sandbox Code Playgroud)
现在获取原始数据集是一项昂贵的操作,因此我不希望按ID进行分组,然后分级,然后再次加入数据集.因此查询需要以另一种方式完成其工作.
干杯安东尼
这将有效:
with temp as (
select *, row_number() over (partition by id order by rank) as rownum
from table_name
)
select * from temp where rownum = 1
Run Code Online (Sandbox Code Playgroud)
每个id会给出一个记录,其中rank代表最少的数字