【发布时间】:2013-12-13 08:12:42
【问题描述】:
我有一个包含许多列和许多重复行的表
由C1、C2、Year、C3、C5列组成的主键,我只想根据较高的Date、C6和C4列(按此顺序)保留每个重复行的一行
例如:让我们取最后 2 行,基于 4 列(我们的主键),我们必须只保留其中的一个并这样做:我们首先比较哪一行具有最高的 Date 列(它们具有相同的日期),然后我们必须继续到第二列(C6),它们具有相同的值 = 0,最后我们比较 C4 列,我们取较高的(=1)。
对于这个例子,我们必须选择最后一行并删除另一行。
C1 C2 Year C3 C4 C5 C6 Date
------------------------------------------------------------------
100 74 2013 2697 0 1 0 11/06/2013
100 74 2013 2697 1 1 0 11/06/2013
100 74 2013 2697 0 1 1 12/06/2013
100 74 2013 2707 1 0 11/06/2013
100 74 2013 2707 2 0 11/06/2013
100 74 2013 2707 3 0 11/06/2013
100 74 2013 2708 0 1 0 11/06/2013
100 74 2013 2708 1 1 0 11/06/2013
100 74 2013 2708 1 1 1 25/06/2013
100 74 2013 2708 0 1 1 30/06/2013
100 74 2013 3211 0 1 0 28/07/2013
100 74 2013 3211 1 1 0 28/07/2013
谢谢
【问题讨论】:
-
This answer 可能会给你一些指示,如果我明白你在做什么?
-
根据您的示例数据,此语句“主键由 C1、C2、Year、C3、C5 列组成”是错误的。您的意思是要根据这些列创建主键吗?
-
@Yaroslav Shabalin 你是对的,在这个例子中它不是主键,但我需要它来只保留一行以消除重复行,然后我必须将这些行插入另一个表中尊重 C1、C2、Year、C3 和 C5 作为主键