-1

我对 pl/sql 很陌生,无法运行此查询。
我希望它找到两个表之间的差异,然后输出这些事务的 ID。
任何帮助,将不胜感激!

SET SERVEROUTPUT ON
DECLARE
diff_id varchar2(50);
diff_id2 varchar2(50);

BEGIN
FOR dcount IN
SELECT
  O.transid ,
  ABB.transid
into diff_id, diff_id2 
FROM
  (SELECT *
  FROM O.transactions
  AND abdate >= trunc(sysdate -3)
  ) O
FULL OUTER JOIN
  (SELECT *
  FROM ABB.transactions
  AND  abdate >= trunc(sysdate -3)
  ) ABB
ON O.transid = ABB.transid

LOOP
 DBMS_OUTPUT.put_line (employee_rec.diff_id);
 DBMS_OUTPUT.put_line (employee_rec.diff_id2);  
END LOOP;
END;
4

1 回答 1

0

我想要的输出将是不在两个表中的事务的 id。即 375 和 480

啊,是的,375和480。832呢?

无论如何:你不需要 PL/SQL 来做到这一点。SET 运算符有什么好处吗?例如,如果您想从第一个表中获取第二个表中未包含的 ID ,您可以使用

select id from first_table
minus
select id from second_table;

双向?

select 'in 1st, not in 2nd' what, id 
from (select id from first_table
      minus 
      select id from second_table)
union all
select 'in 2nd, not in 1st', id
from (select id from second_table
      minus
      select id from first_table);

如有必要,应用附加条件(例如 ABDATE 列)。

于 2018-01-30T07:20:26.437 回答