如何在Oracle中为重复行创建排除标志

时间:2014-10-14 07:01:45

标签: sql oracle

以下是我的数据的快照

NameAgeIncome Group
Asd 20  A
Asd 20  A
b   19  E
c   21  B
c   21  B
c   21  B
df  21  C
rd  24  D

我想要包含一个标志变量,其中它表示重复行中的1到1,而另一行表示0。并且0到其余的不重复的行。下面给出了最终期望输出的快照

NameAgeIncome Group Flag
Asd 20  A   1
Asd 20  A   0
b   19  E   0
c   21  B   1
c   21  B   1
c   21  B   0
df  21  C   0
rd  24  D   0

任何人都可以帮助我如何在Oracle数据库中创建这个Flag变量

1 个答案:

答案 0 :(得分:2)

您可以使用分析函数和case

执行此操作
select t.*,
       (case when row_number() over (partition by name, age, income order by name) = 1
             then 0 else 1
        end) as GroupFlag
from table t;