2017-05-09 35 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顯示爲設置爲第二條記錄的FROM_DT。 – BriteSponge

回答

0

您可以使用窗口功能,只注重行之後,最後一行將是空的,你可以跳過。

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; 
相關問題