繁体   English   中英

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

[英]SQL - Select rows with distinct one column for each non-unique ID

我之前在这里看到过类似的问题,但我的问题的不同之处在于我无法通过唯一 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

我希望我的查询返回:

Request_ID  Location    Review_Status
==================================================
1           HQ          Not Reviewed
1           Scranton    Reviewed
1           Binghamton  Not Reviewed
2           Scranton    Reviewed
2           Stamford    Not Reviewed

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

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

我想你只想要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;

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

您需要使用 rownumber()

例如 :

SELECT
NEW_TBL.*
FROM
(SELECT
             ROW_NUMBER() OVER(PARTITION BY Location ORDER BY ID) AS ROWNUM
            ,TBL.*      
      FROM Request_Data TBL
  ) NEW_TBL
WHERE 
NEW_TBL.ROWNUM = 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM