【发布时间】:2017-03-17 10:28:52
【问题描述】:
我有两个表 2017 和 2018。这两个表具有相同的列,但值不同。我想获得每列的不同值,并且我想确保 2018 年的所有唯一列都出现在 2017 年。我在每个表中有 100 多列。我已经使用游标尝试了以下查询。结果将存储在另一个名为“RESULT_MINUS”的表中
DECLARE
COL VARCHAR2 (200);
OUTRECORD VARCHAR2 (200);
CURSOR COLUMN_NM
IS
SELECT COLUMN_NAME
FROM all_tab_columns
WHERE table_name = 'COMPARE_2018_P1'
CURSOR DIFFERENCE
IS
SELECT OUTRECORD
FROM (SELECT DISTINCT COL
FROM COMPARE_2018_P1
MINUS
SELECT DISTINCT COL
FROM COMPARE_2017_P1);
BEGIN
OPEN COLUMN_NM;
LOOP
FETCH COLUMN_NM INTO COL;
DBMS_OUTPUT.put_line (COL);
OPEN DIFFERENCE;
LOOP
FETCH DIFFERENCE INTO OUTRECORD;
INSERT INTO RESULT_MINUS
VALUES ('B001',
'COMPARE',
'2018',
COL,
OUTRECORD,
'NOT PRESENT IN 2017');
COMMIT;
END LOOP;
CLOSE DIFFERENCE;
END LOOP;
CLOSE COLUMN_NM;
END;
提前谢谢..
【问题讨论】:
-
(1) 用您正在使用的数据库标记您的问题。 (2) 提供样本数据和期望的输出。 (3) 提出问题。例如,您当前的代码有什么问题?
-
为什么不同年份有不同的表?
-
我正在使用oracle数据库
-
这是 2 年的报告@jarlh