2015-07-27 2 views
1

Мой текущий код create table p(px int primary key, createDate date,updateDate date);Удалить Sql запрос с сазе в oracle11.2

insert into p values(1,'23-JUL-15','25-JUL-15'); 

insert into p values(2, '23/JUN/2015','25-JUL-15'); 

insert into p values(3, '23/May/2015','25/May/15'); 

insert into p values(4, '23/April/2015','25/April/2015'); 

insert into p values(5, '23/March/2015','25/March/2015'); 

Мой Предыдущий запрос delete from p where add_months(sysdate, - 3) > p.updateDate; Но, теперь я хочу, чтобы использовать выглядел, если еще. Если updateDate имеет значение null, я хочу использовать столбец createDate. Итак, теперь я использую case statement.My текущий запрос DELETE FROM p WHERE add_months(sysdate, - 3) > case Updatedate when updatedate IS NULL else updateDate end;, но теперь я нашел ошибку. Может я использую delete sql query с case statement.

+0

вы можете возможно использовать 'MERGE' заявление с соответствующей согласованью. В противном случае это станет процедурой в PL/SQL, содержащей логику. – Joram

+0

Вы можете использовать функцию nvl. –

ответ

1

Попробуйте

DELETE FROM p WHERE add_months(sysdate, - 3) > 
case when updatedate IS NULL then createDate else updateDate end 
+0

⇒ Да, это нормально! Большое вам спасибо, желаю вам всего наилучшего. Я не знаком с аргументом case в sql-запросе. Спасибо за ваше предложение! –

+0

Хорошо. Тогда примите это как ответ :) – Madhivanan