2017-09-27 141 views
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列在表中。這個怎麼做?

回答

0

一個可能適合您的需求並且不需要動態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