2016-05-18 59 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 –