2017-03-02 103 views
0

當前遇到問題。我們正試圖建立一個報告,讓我們可以看到從一個時刻到另一個時刻的變化。例如,一個小例子就是我們希望報告在6個月前生成姓氏,並且他們的姓氏從今天開始。Oracle SQL - 查詢數據庫更改

有沒有一個SQL表達式可以爲我做到這一點? (例如,將SQL日期參數添加到數據來自6個月前的第一個姓氏列)。

謝謝

+0

請提供樣品數據和預期輸出來澄清 – GurV

+0

您的「數據庫」(無論是什麼意思)是否存儲歷史信息,或僅存儲當前信息?也就是說 - 你有一張「僱員」的表,一列是「last_name」 - 你在這個表中有一個「effective_date」列嗎?你只在表中插入'INSERT'而不是'UPDATE'?如果您可能需要報告中的歷史信息,那麼這是存儲信息的標準方式。 – mathguy

+0

我將您的問題標記爲「範圍過寬」,因爲回答將基於您如何存儲歷史數據。由於您沒有提供足夠的信息,因此沒有人可以回答 –

回答

1

使用flashback query(你必須確保數據庫設置爲支持這個第一併有足夠的閃回保留到手柄6個月的數據):

SELECT COALESCE(current.id, previous.id) AS id, 
     current.name AS current_name, 
     previous.name AS name_six_months_ago 
FROM table_name current 
     FULL OUTER JOIN 
     (
     SELECT id, name 
     FROM table_name 
     AS OF TIMESTAMP (ADD_MONTHS(SYSTIMESTAMP, -6)) 
     ) previous 
     ON (current.id = previous.id);