首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除重复间隔/历史重复

删除重复间隔/历史重复
EN

Stack Overflow用户
提问于 2018-02-16 16:33:14
回答 1查看 59关注 0票数 0

给这个问题取一个合适的标题是个挑战,所以我会尽力解释这个问题。我们使用JCC进行Oracle -> Server复制。它的工作方式是在Oracle中读取事务日志,然后发送两个语句: INSERT + UPDATE。因此,如果没有这样的记录,如果Server中的记录已经存在,它将被插入,因此第一个插入将因PK违规而失败,然后它将尝试更新记录。

现在,我们正在尝试使用Server时态表进行历史跟踪。当我们需要重播日志时,当JCC (复制)失败时,问题就开始了。例如,复制在11:01AM时失败。为了确保我们不会错过任何记录,我们需要重播,例如从上午10:45开始。它适用于普通表,但当我们处理时态表时,它只会抛出历史,而历史就变得不准确了。

所以现在问题是。如何识别和清理这些记录?

代码语言:javascript
复制
CREATE TABLE #temptable ( [UPDATE_DATE] datetime, [SysStart] datetime2(7), [SysEnd] datetime2(7), [key_column] char(8) )
INSERT INTO #temptable
VALUES
( N'2017-10-23T17:21:34', N'2017-10-23T21:21:44.5514785', N'2017-10-25T10:24:23.604867', '41862277' ), 
( N'2017-10-23T16:21:43', N'2017-10-25T10:24:23.604867', N'2017-10-25T10:24:24.4954892', '41862277' ), 
( N'2017-10-23T16:49:02', N'2017-10-25T10:24:24.4954892', N'2017-10-25T10:24:25.5111274', '41862277' ), 
( N'2017-10-23T17:20:58', N'2017-10-25T10:24:25.5111274', N'2017-10-25T10:24:25.5111274', '41862277' ), 
( N'2017-10-23T17:21:34', N'2017-10-25T10:24:25.5111274', N'2017-10-25T10:24:25.5111274', '41862277' ), 
( N'2017-10-10T14:17:49', N'2017-10-20T14:25:24.7135228', N'2017-10-23T20:21:52.6602561', '41862277' ), 
( N'2017-10-23T16:21:43', N'2017-10-23T20:21:52.6602561', N'2017-10-23T20:49:08.6122864', '41862277' ), 
( N'2017-10-23T16:49:02', N'2017-10-23T20:49:08.6122864', N'2017-10-23T21:20:58.7073273', '41862277' ), 
( N'2017-10-23T17:20:58', N'2017-10-23T21:20:58.7073273', N'2017-10-23T21:21:34.426412', '41862277' ), 
( N'2017-10-23T17:21:34', N'2017-10-23T21:21:34.426412', N'2017-10-23T21:21:44.5514785', '41862277' )


DROP TABLE #temptable

预期成果:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-16 16:52:59

此查询返回所提供的示例数据的预期结果。运行delete语句前检查CTE中的查询

代码语言:javascript
复制
with cte as (
    select 
        *, dr = dense_rank() over (partition by [key_column], cast([UPDATE_DATE] as date) order by cast([SysStart] as date))
    from 
        #temptable
)
delete from cte
where dr > 1
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48831083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档