我有下面这个特定的表格。我想从第 2 组中消除重复的类(class),因为它位于第 1 组中。基本上,如果类(class)映射到强制的第 1 组,我们只需考虑这一点,而不是在任何其他组中。我必须先检查重复类(class),然后删除重复类(class),这不是强制性的。
Program Group Course Mandatory
Program1 1 a YES
Program1 1 b YES
Program1 1 c YES
Program1 2 d NO
Program1 2 a NO
Program1 2 e NO
Program1 3 f YES
我无法弄清楚相同的列操作,或者我今天不工作(:-)) 我尝试过使用计数操作并为重复行创建标志,但无法使用 group by 子句中的“Group”来执行此操作。
输出:
Program Group Course Mandatory
Program1 1 a YES
Program1 1 b YES
Program1 1 c YES
Program1 2 d NO
Program1 2 e NO
Program1 3 f YES
编辑
我们怎样才能 检查重复记录并仅将其从一个特定组中删除。
最佳答案
您可以使用 ROW_NUMBER() 函数来实现此目的:
SELECT *
FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY COURSE ORDER BY [Group] ) as RowRank
FROM table
)sub
WHERE RowRank = 1
演示:SQL Fiddle
编辑:ROW_NUMBER 为每行分配一个编号。对于您通过 PARTITION BY 部分分配的每个分组,编号将从 1 开始,在这种情况下,每个类(class)都会有一个编号 1 并向上。数字的顺序由 ORDER BY
部分确定,在本例中,最低的 [Group]
获得 1。
关于sql - 列操作和消除重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17329388/