如果多个重复的行仍然返回不重复的行,如何只返回1行?

6 sql

我有一个看起来像这样的temptable:

RequestID   | CreatedDate          | HistoryStatus           
CF-0000001  | 8/26/2009 1:07:01 PM | For Review   
CF-0000001  | 8/26/2009 1:07:01 PM | Completed  
CF-0000112  | 8/26/2009 1:07:01 PM | For Review   
CF-0000113  | 8/26/2009 1:07:01 PM | For Review  
CF-0000114  | 8/26/2009 1:07:01 PM | Completed  
CF-0000115  | 8/26/2009 1:07:01 PM | Completed   
Run Code Online (Sandbox Code Playgroud)

而我希望表格看到最后是这样的:

RequestID   | CreatedDate          | HistoryStatus           
CF-0000001  | 8/26/2009 1:07:01 PM | Completed  
CF-0000112  | 8/26/2009 1:07:01 PM | For Review  
CF-0000113  | 8/26/2009 1:07:01 PM | For Review  
CF-0000114  | 8/26/2009 1:07:01 PM | Completed  
CF-0000115  | 8/26/2009 1:07:01 PM | Completed
Run Code Online (Sandbox Code Playgroud)

CF-0000001应删除副本.

如果有多个重复的行仍然返回不重复的行,我该如何返回或者我应该只选择一行?

Him*_*dri 11

如果要基于RequestID和CreatedDate显示重复行之一并显示最新的HistoryStatus,请尝试此操作.

with t as (select row_number()over(partition by RequestID,CreatedDate order by RequestID) as rnum,* from tbltmp)
Select RequestID,CreatedDate,HistoryStatus from t a where  rnum in (SELECT Max(rnum) FROM t GROUP BY RequestID,CreatedDate having t.RequestID=a.RequestID)
Run Code Online (Sandbox Code Playgroud)

或者如果您只想选择CreatedDate中的一个重复行并显示最新的HistoryStatus,请尝试下面的查询.

with t as (select row_number()over(partition by CreatedDate order by RequestID) as rnum,* from tbltmp)
Select RequestID,CreatedDate,HistoryStatus from t  where  rnum = (SELECT Max(rnum) FROM t)
Run Code Online (Sandbox Code Playgroud)

或者,如果您想选择仅考虑请求ID的重复行之一并显示最新的HistoryStatus,请使用下面的查询

with t as (select row_number()over(partition by RequestID order by RequestID) as rnum,* from tbltmp)
Select RequestID,CreatedDate,HistoryStatus from t a where  rnum in (SELECT Max(rnum) FROM t GROUP BY RequestID,CreatedDate having t.RequestID=a.RequestID)
Run Code Online (Sandbox Code Playgroud)

我在sql server 2005中编写的所有上述查询.


lla*_*oo7 5

从标题我猜你每个独特的行只需要一个结果?如果是这种情况,请查看GROUP BY子句(或SELECT DISTINCT).


Cha*_*ana -1

如果这是一个 SQL 问题,并且我明白你在问什么(并不完全清楚),只需在查询中添加不同的

   Select Distinct * From TempTable
Run Code Online (Sandbox Code Playgroud)