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

时间:2019-12-17 17:40:50

标签: sql sql-server tsql distinct

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

这是我的表Request_Data的样子:

let result = Array.from(new Set(bigString.split("\n")))
        .join("\n")
        .toString(); 

我希望查询返回:

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

将其放入单词中,我的表引用了一个外键请求ID,该ID包含多个要检查的订单代码,每个订单代码都有一个区域。区域的订单代码都将立即审核,因此我只需要每个区域的每个请求ID返回一条记录即可获得该区域的审核状态。

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

2 个答案:

答案 0 :(得分:4)

我认为您只想要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对的第一条记录。

答案 1 :(得分:0)

您需要使用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