【问题标题】:Pl/sql dbms outputpl/sql dbms 输出
【发布时间】:2018-07-08 18:16:27
【问题描述】:

我对 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;

【问题讨论】:

  • 请添加两个表的一些示例数据以及您在谈论什么样的差异。还根据示例数据添加所需的结果。见here how to proper ask a good sql question
  • 每个表中有 2 列,ID 和日期,我想要的输出将是不在两个表中的事务的 ID。即 375 和 480。
  • 阅读我提供的文章,特别是 2 部分。提供背景 - 相关数据?尝试?
  • 这不是查询。
  • 您的 PL/SQL 在查询周围缺少括号。此外,自行运行查询(从SELECTABB.transid)并检查结果。

标签: plsql oracle11g dbms-output


【解决方案1】:

我想要的输出将是不在两者中的交易的 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 列)。

【讨论】:

    猜你喜欢
    • 2015-02-24
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多