删除按三列分组并按日期排序的旧记录

问题描述

这种情况:

CREATE SEQUENCE SEQ_tmpdata MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 2206 NOCACHE  ORDER  NOCYCLE  NOKEEP  NOSCALE  GLOBAL;

CREATE TABLE TMP_DATA ( 
     ID NUMBER(19,0) DEFAULT SEQ_tmpdata.nextval  NOT NULL,COL_1  VARCHAR2(256 CHAR),COL_2  VARCHAR2(256 BYTE),COL_3  VARCHAR2(256 BYTE),COL_4  TIMESTAMP(6),COL_5  NUMBER(19,6),COL_6  VARCHAR2(256 BYTE)
);
insert into tmp_data (col_1,col_2,col_3,col_4,col_5,col_6) values ('phone','P1','RA',TO_TIMESTAMP('2020-06-29 00:00:00','YYYY-MM-DD HH24:MI:SS'),'2,555','tabla_tmp_2');
insert into tmp_data (col_1,'P3','MB',TO_TIMESTAMP('2020-06-01 00:00:00','5,3141','P4','RC',TO_TIMESTAMP('2020-06-18 00:00:00','15,8686','P11','45',TO_TIMESTAMP('2020-05-09 00:00:00','8,5812','tabla_tmp_1');
insert into tmp_data (col_1,'57',TO_TIMESTAMP('2020-02-19 00:00:00',362',col_6) values ('NO_VALUE','DE32','NO_VALUE',TO_TIMESTAMP('2019-06-01 00:00:00','29,32','tabla_tmp_3');
insert into tmp_data (col_1,'21',TO_TIMESTAMP('2020-03-12 00:00:00','6,1776','AS',TO_TIMESTAMP('2020-05-11 00:00:00','14,5556','P7',TO_TIMESTAMP('2020-04-09 00:00:00','7,2568','tabla_tmp_4');
insert into tmp_data (col_1,'A02',TO_TIMESTAMP('2020-05-17 00:00:00','4,4584','DE33','180','38',TO_TIMESTAMP('2020-02-23 00:00:00',6657','P9','18',TO_TIMESTAMP('2020-02-25 00:00:00',5658','DE34','260',TO_TIMESTAMP('2020-05-08 00:00:00',127',TO_TIMESTAMP('2020-04-12 00:00:00','9,0588','DE35','460','11,2971','P8',TO_TIMESTAMP('2020-04-16 00:00:00','16,7299','DE36','220','48',TO_TIMESTAMP('2020-04-26 00:00:00',2402','30',TO_TIMESTAMP('2020-03-27 00:00:00',4043','P10',TO_TIMESTAMP('2020-05-05 00:00:00',0002','12',TO_TIMESTAMP('2020-04-05 00:00:00',8953','A10',TO_TIMESTAMP('2020-04-14 00:00:00','13,9176',TO_TIMESTAMP('2020-06-26 00:00:00',7008',TO_TIMESTAMP('2020-03-05 00:00:00',336',TO_TIMESTAMP('2020-02-17 00:00:00',2724',TO_TIMESTAMP('2020-03-26 00:00:00','12,2274','DE37','229,'8',TO_TIMESTAMP('2020-04-02 00:00:00',8931',TO_TIMESTAMP('2020-06-20 00:00:00',9942','49',TO_TIMESTAMP('2020-04-06 00:00:00',2022',TO_TIMESTAMP('2020-03-23 00:00:00',6923','DE38','209,'tabla_tmp_4');

commit;

问题是: 我需要删除较旧的记录,按col_2,col_3和col_6分组,并按col_4排序。要让最后一个元素下注col_6。

想法是这样的:

enter image description here

我只是为了测试删除“ tabla_tmp_1”的旧记录而对此进行测试:

delete tmp_data f 
where  col_4 not in (
 select max(col_4)
 from   tmp_data s 
 where f.col_1 = s.col_1 
   and f.col_2 = s.col_2 
   and f.col_3 = s.col_3 
   and col_6 = 'tabla_tmp_1'
   and col_1 = 'phone' 
   and col_4 < to_date('27/09/2020','DD/MM/YYYY')
 );

但不起作用。

有人可以帮我吗?

最诚挚的问候

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)