我有一個emp_id,firstname,lastname,region_id,status和effective_date等列的僱員表。如何獲取oracle中的最新員工記錄?
員工表可以爲具有不同生效日期和狀態的同一員工創建多個條目。
員工可以有兩個狀態'Leaver'和'Joiner'。
id emp_id firstname region status effective_date
1 1 James Asia Joiner 1-Jan-2012
2 1 James UK Leaver 1-Aug-2012
3 1 James USA Joiner 1-Aug-2012
4 1 James Asia Leaver 1-May-2012
5 1 James UK Joiner 1-May-2012
6 1 James USA Leaver 1-Sep-2012
隨着員工表上面的數據,如果我想要得到詹姆斯的最新紀錄爲2012年1月1日,我會得到與ID記錄= 1,
如果我想要得到的如2012年5月1日詹姆斯的最新紀錄,我會得到與ID記錄= 5
如果我想要得到詹姆斯的最新紀錄爲2012年8月1日,我會得到使用id = 3的記錄,
如果我想得到最新的詹姆斯記錄,因爲在2012年9月1日,我會得到id = 6的記錄
以下查詢正確地給我最新的記錄
SELECT
emp_id,
MAX(effective_date) AS latest_effective_date
FROM
EMPLOYEE
GROUP BY
emp_id
但後來我怎麼得到其他列,比如姓名,區域等
如果我把它們放在SELECT子句或group by子句,我不只是得到最新的記錄,但其他記錄也是如此。
你能解釋一下嗎? 「如果我想得到2012年8月1日詹姆斯的最新紀錄,我會得到id = 3的記錄」爲什麼不是2? – Sebas
@ Sebas。當然,詹姆斯將於2012年8月1日從英國地區遷往美國。因此,如果我需要了解詹姆斯在2012年8月1日的情況,那麼它必須返回美國而不是英國。因此,記錄id = 3,而不是id = 2。 – ashishjmeshram
那麼你的整個邏輯將被審查,你自己的查詢返回「正確的最後一個記錄」只是偶然。我現在脫離了這個話題,你需要解決一些分析問題。 – Sebas