2017-05-09 4 views
-1

要件は以下のようです:同じテーブルで私は以下の期待される出力が必要です。 表名:TAB 電流出力:更新する必要があります同じテーブルのFROM_DTの現在のバージョンTO_DATEに

出力を期待
PRIM_KEY| FROM_DT | TO_DT 
11111  01-JAN-00 01-JAN-25 
11112  01-MAR-16 01-JAN-25 

:あなたはウィンドウ関数を使用して、次の行だけに集中することができ

PRIM_KEY| FROM_DT | TO_DT 
11111  01-JAN-00 01-MAR-16 
11112  01-MAR-16 01-JAN-25 
+0

ロジックの背景は何ですか?また、何を試しましたか? – Aleksej

+1

あなたはFROM_DTを前のレコードのTO_DTに設定したいと思っていますが、それはあなたの期待される出力が示すものではありません。代わりに、最初のレコードのTO_DTが2番目のレコードのFROM_DTに設定されていることを示します。 – BriteSponge

答えて

0

、最後の行は、あなたがそれをスキップすることができますnullになります。

MERGE 
INTO table1 AS A 
USING 
    (
    SELECT PRIM_KEY, FROM_DT, MIN(FROM_DT) OVER (PARTITION BY 1 ORDER BY PRIM_KEY ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) AS NEXT_START_DT 
    FROM table1) AS B 
    ON A.PRIM_KEY = B.PRIM_KEY AND B. PRIM_KEY IS NOT NULL 
    WHEN MATCHED THEN 
    UPDATE SET TO_DT = NEXT_START_DT; 
関連する問題