如何从重复记录和非重复记录中选择一个?

时间:2012-03-10 11:03:11

标签: sql sql-server

我有一张如下表

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

请帮帮我。感谢

4 个答案:

答案 0 :(得分:3)

假设您不想var1,请尝试:

select var2, var3, max(ra)
from myTable
group by var2, var3

答案 1 :(得分: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 

答案 2 :(得分:0)

select var2, var3, max(ra)
from table1
group by var2, var3

答案 3 :(得分:0)

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