我有一个3列的表.它在第2列和第3列上有重复.我需要选择pnly重复行(包含所有3列).怎么做?请帮助我.
var1 var2 var3
a a a
b a a
c a a
d b b
e c c
以上是表结构.它有3个columsn var1,var2,var3.仅基于列var2和var3,我们必须假设它是重复记录.我们不应该在找到副本时考虑var1.对不起对齐.
我已经使用下面的查询来获取所有具有/不具有重复的行,但具有用于标识重复记录的等级.但我不能只获得重复的记录.
select var1,var2,var3,ROW_NUMBER() over(PARTITION BY
var2,var3 order by var2,var3) as rnk
from vart
除此之外,我如何在重复的条目中获得最大排名记录?谢谢.
如果您希望所有具有重复项的行都可以使用count(*) over()
select var1, var2, var3
from (
select var1,
var2,
var3,
count(*) over(partition by var2, var3) as dc
from YourTable
) as T
where dc > 1
Run Code Online (Sandbox Code Playgroud)
结果:
var1 var2 var3
---- ---- ----
a a a
b a a
c a a
Run Code Online (Sandbox Code Playgroud)
如果你想要所有重复项,而是使用一个副本row_number() over()
.
select var1, var2, var3
from (
select var1,
var2,
var3,
row_number() over(partition by var2, var3 order by var1) as rn
from YourTable
) as T
where rn > 1
Run Code Online (Sandbox Code Playgroud)
结果:
var1 var2 var3
---- ---- ----
b a a
c a a
Run Code Online (Sandbox Code Playgroud)