我在使用下一个记录开始日期更新上一记录的结束日期时遇到问题。问题是记录进来,在同一个表中加载。除了所有列的组合之外,没有唯一的行标识符。 示例:源表
HICN FIRST_NAME LAST_NAME M_NAME DOB(string) START_DATE X123 ABC DEF M ' 19600101 1/1/2013 Y456 ABC DEF M 19600101 2/2/2014现在,(这是我的业务要求,我无能为力)在目标中我有一个额外的列END DATE。这是第一次加载,我必须使用名字,姓氏等的连接组合即时识别 第一条记录和第二条记录是相同的,如果(并且仅当)HICN号码为成员更改,我必须使用第二条记录的Start_Date更新第一条记录的end_date(即带有HICN X123的记录)(即记录HICN Y456)所以我的目标应该是:
HICN FIRST_NAME LAST_NAME M_NAME DOB(string) START_DATE END DATE X123 ABC DEF M ' 19600101 1/1/2013 2/2/2014 Y456 ABC DEF M 19600101 2/2/2014 12/31/1990
我已经想出如何更新日期列和标志(我上面没有提到成员的活动和非活动hicn)第二次运行,但如果两个记录都在同一批次中,则不知道如何执行此操作。任何帮助将不胜感激。感谢
答案 0 :(得分:0)
尝试以下选项:
在目标表中创建一个列,如ROW_ID with VARCHAR2(100)
使用以下 -
在表达式转换中创建表达式MD5(Col1中||' ' || || COL2' ' || ...等)
' *' - 是获得精确输出的分隔符
这个MD5函数将生成一个32位掩码,我们将在后续步骤中使用它
在目标表上进行动态查找
现在,每次收到新行时,它都会添加到目标以及动态查找。因此,如果您尝试将ROW_ID字段与第二行计算的ROW_ID匹配,则可以轻松找到重复记录。
MD5是使用整列列表查找重复的最佳和最快的方法之一。不要忘记创建动态查找,否则您将无法找到重复项。
如果您需要更多信息,请与我们联系。