2016-05-18 61 views
0

我有一個表像這樣使用DENSE_RANK找到不同

Id student_name City 
4 abc    Mumbai 
6 xyz    Delhi 
4 lmn    Kolkata 
6 abc    Mumbai 
6 GHI    Chennai 

我使用dense_rank()功能解僱的ID在表中的重複條目意味着,如果我遇到的ID 4的兩倍,應該給我只有一次輸出。

當我使用dense_rank功能,如:

select dense_rank() over (order by student_id desc ) as ID ,Id, student_name,city 
from test 

這是給我的輸出是這樣的

ID ID student_name city 
1 4 abc    Mumbai 
1 4 lmn    kolkata 
2 6 xyz    Delhi 
2 6 abc    Mumbai 

但我不想重複瞭如何使用dense_rank()函數刪除

回答

0

首先,dense_rank()select不做過濾。所以,我不知道爲什麼輸入有五行時輸出會有四行。

其次,每個ID只保留一行,然後使用row_number(),而不是dense_rank()。 。 。以及子查詢:

select t.* 
from (select t.*, 
      row_number() over (partition by student_id order by student_id) as seqnum 
     from test t 
    ) t 
where seqnum = 1; 
+0

好一@Gordon。它工作ty –