2017-10-13 15 views
0

次のレコード開始日を使用して前のレコードの終了日の更新に関する問題があります。問題は、両方のレコードが同じテーブルの読み込みで入ってくることです。また、すべての列の組み合わせを除いて、一意の行識別子はありません。 例:ソーステーブル前のレコード終了日次のレコード開始日を使用してインフォーマティカの更新

 
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があります。これは最初の読み込みであり、姓、名字などの連結された組み合わせを使用してオンザフライで識別する必要があります。 第1レコードと第2レコードが同じで、HICN番号が私は考え出した

 
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 Y456とのすなわち、レコード)のSTART_DATEと第一レコード(HICN X123とのすなわち、レコード)のEND_DATEを更新する必要がメンバー2回目の実行で日付のcolsとflagを更新する方法(これはメンバのアクティブで非アクティブなhicnに関して上記には言及していませんでしたが)両方のレコードが同じバッチに入っている場合、これを行う方法はわかりません。どんな助けでも大歓迎です。おかげ

答えて

0

は、これらのオプションを試してみてください。

  1. VARCHAR2でROW_IDのようなターゲット表の列を作成します(100)

  2. を以下で式変換における発現の作成 -

    MD5(のCol1を|| '' || col2 || '' || ...など)

    「*」は、 cised出力

    はこのMD5機能は

今、ターゲット表上の動的な検索、あなたが受け取るたびに持っている私たちは、次のステップでそれを使用する32ビットマスクを生成します。新しい行がターゲットに追加され、動的ルックアップとなります。したがって、ROW_IDフィールドを2番目の行のROW_IDと一致させると、重複したレコードを簡単に見つけることができます。

MD5は、列リスト全体を使用してdupsを検索する最善の方法です。 動的ルックアップを作成しないと、ダンプを見つけることができません。

詳細情報が必要な場合はお知らせください。

+0

はい私はあなたの解決策を得ました。私は最初の2つのステップを適用しました。ただし、動的ルックアップを使用する前に、次のようにします。1.新しい行が最初の行と一致する場合は、最初の行のend_dateを更新できますか?ROW_ID = 1の行を指定できますか? 2.はいの場合、2行目の開始日を使用して1行目のEnd_Dateを更新するにはどうすればよいですか? ありがとう –

+0

この場合、レコードを逆順にソートして最初のレコードの開始日を取得し、2番目に一致するレコードの終了日に更新する必要があります。最後まで、次のレコードについて同じことを繰り返します。希望者はそれを助けることができます –

+0

ソーターを使用するとマッピングのパフォーマンスが低下するため、ターゲット更新を使用してカウンタ(ROW_ID)が1より大きいかどうかを確認してから、override SQLを使用して更新し、日付。それに対して更新オーバーライドを使用できますか?@Aswin_Infa_Developer –

関連する問題