0
我正在研究oracle 11g中的更改數據捕獲。我想在變化表例如只更新的列更改oracle 11g中的數據捕獲
EMPNO ENAME JOB MGR HIREDATE DEPTNO
5 ford clerk 104 01-JAN-12 11
5 ford clerk 104 01-JAN-12 18
考慮上表中的變化表,這裏只部門號已更新,所以我只需要deptno列在表中。這個怎麼做?
我正在研究oracle 11g中的更改數據捕獲。我想在變化表例如只更新的列更改oracle 11g中的數據捕獲
EMPNO ENAME JOB MGR HIREDATE DEPTNO
5 ford clerk 104 01-JAN-12 11
5 ford clerk 104 01-JAN-12 18
考慮上表中的變化表,這裏只部門號已更新,所以我只需要deptno列在表中。這個怎麼做?
一個可能適合您的需求並且不需要動態SQL的選項是聚合員工記錄,然後檢查每個列中是否發生更改。
SELECT
EMPNO,
ENAME,
CASE WHEN COUNT(DISTINCT JOB) > 1
THEN 'yes' ELSE 'no' END AS job_changed,
CASE WHEN COUNT(DISTINCT MGR) > 1
THEN 'yes' ELSE 'no' END AS mgr_changed,
CASE WHEN COUNT(DISTINCT HIREDATE) > 1
THEN 'yes' ELSE 'no' END AS hire_date_changed,
CASE WHEN COUNT(DISTINCT DEPTNO) > 1
THEN 'yes' ELSE 'no' END AS dept_changed
FROM yourTable
GROUP BY
EMPNO,
ENAME