2012-03-10 163 views
0

我有像下面如何在重复记录和非重复记录中选择一个?

var1  var2  var3  ra 
a   a   a   1 
b   a   a   2 
c   a   a   3 
d   b   b   4 
e   c   c   1 

重复记录的表是基于columns var2 and var 3鉴定。最后一列是重复项的行号。我只需要选择重复记录和其他非重复记录中的最大行号记录。

预期产量将

var2  var3  ra 
a   a   3 
b   b   4 
c   c   1 

请帮助我。由于

回答

3

假设你不想var1,尝试:

select var2, var3, max(ra) 
from myTable 
group by var2, var3 
0
select var2, var3, max(ra) 
from table1 
group by var2, var3 
+1

它只是他的表名! – Vikram 2012-03-10 11:10:36

0
select var2, var3, max(ra) as ra 
from tableX 
group by var2, var3 
1

如果需要在其他列拉(现有的答案给你已经确切的输出指定),你可以使用ROW_NUMBER()

;WITH OrderedRows as (
    SELECT *,ROW_NUMBER() OVER (PARTITION BY var2,var3 ORDER BY ra desc) as rn 
    FROM <Table> 
) 
SELECT 
    * --TODO - Explicit column list 
FROM 
    OrderedRows 
WHERE 
    rn = 1