这一个正在窃听我。SQL Server:只更新多个完全重复的记录中的一个
我在一个数据仓库临时表中工作,其中可能有列值为其他列的100%重复的行。有几十个栏目,但对于这种说法的缘故,让我们用下面的例子:
tblExample (ID Int, Active bit, ModifiedDate DateTime)
现在,在任何给定的时间也就只应该是每有活动设置为1 ID一个记录。所有其他应该有活动设置为0.有一个过程,在数据加载过程中强制执行此操作。
这个过程会和过去已破裂,从而导致数据是这样的:
ID Active ModifiedDate
123456 0 2016-05-27 12:37:46.111
123456 1 2016-05-27 12:37:46.433
123456 1 2016-05-27 12:37:46.433
在这种情况下,有2个“相同”的记载有主动设置为1 我需要找到一个方法来使这些记录只有一个有效= 1。
现在我正在使用的过程中,目前假定日期值是唯一的,在99.99%的时间是这种情况。但有些时候日期也会重复。而且我不能为了我的生活找出一种方法来只更新那些记录中的单个记录,因为我没有任何东西可以锁定到WHERE。
- 我无法添加或修改架构。
- 这一切发生内部ssis,所以我仅限于固有的与平台(有些东西只是不SSIS中很好地工作)
观念的限制?
这就是为什么主键是重要的。 – Tyler
那么我能看到的第一个解决方法是将它全部更新为零,然后更新只有最大日期限制为1的那个。 –
只是想着,我从专业人士(因此写作评论)faaaar,但你可以创建一个CTE'选择顶部1 ...',然后更新CTE? –