SQL - 为每个非唯一 ID 选择具有不同一列的行

all*_*ace 0 sql t-sql sql-server distinct

我之前曾在这里看到过类似的问题,但我的问题的不同之处在于我无法通过唯一的 ID 进行分区。

这是我的表 Request_Data 的样子:

ID  Request_ID  Location  Order_Code  Review_Status
=================================================
1   1           HQ         SXXXXF     Not Reviewed
2   1           Scranton   ASDFGH     Reviewed
3   1           Scranton   ABCDEF     Reviewed
4   1           Binghamton PSDFJG     Not Reviewed
5   2           Scranton   GGGGGG     Reviewed
6   2           Stamford   PRWERE     Not Reviewed
7   2           Scranton   UYUIFG     Reviewed
Run Code Online (Sandbox Code Playgroud)

我希望我的查询返回:

Request_ID  Location    Review_Status
==================================================
1           HQ          Not Reviewed
1           Scranton    Reviewed
1           Binghamton  Not Reviewed
2           Scranton    Reviewed
2           Stamford    Not Reviewed
Run Code Online (Sandbox Code Playgroud)

换句话说,我的表引用了一个外键请求id,其中包含多个要审核的订单代码,每个订单代码都有一个区域。一个区域的订单代码都是一次性审核的,因此我只需要每个区域的每个请求 ID 返回一条记录即可获取该区域的审核状态。

我知道这是一个奇怪的设计;我没有设置这个,但我必须使用它。谢谢。

Gor*_*off 5

我想你只是想要row_number()

select t.*
from (select t.*,
             row_number() over (partition by request_id, location order by id) as seqnum
      from t
     ) t
where seqnum = 1;
Run Code Online (Sandbox Code Playgroud)

request_id这将返回每个/对的第一条记录location