不使用子查询的高级分组

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进行分组,然后分级,然后再次加入数据集.因此查询需要以另一种方式完成其工作.

干杯安东尼

Ras*_*dit 7

这将有效:

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代表最少的数字