2017-09-27 3 views
0

Oracle 11gのChange Data Captureで作業しています。例えば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