如何解决如何创建程序每天更新
我需要改变这个脚本,让它每天更新数据,因为每天插入新数据
MERGE INTO t_customer_statistics tcs
USING (
SELECT rowid rid,LEAD(TRX_DATE,1) OVER (PARTITION BY cuid ORDER BY TRX_DATE DESC) AS prev_dt,LAG(TRX_DATE,1) OVER (PARTITION BY cuid ORDER BY TRX_DATE DESC) AS next_dt
FROM t_customer_statistics
) src
ON ( tcs.ROWID = src.rid )
WHEN MATCHED THEN
UPDATE
SET LIFECYCLE_STATUS = CASE
WHEN prev_dt IS NULL
THEN 'acquired'
WHEN MONTHS_BETWEEN(Trunc(tcs.TRX_DATE,'MM'),Trunc(src.prev_dt)) <= 1
THEN 'existing'
ELSE 'reactivated'
END
||
CASE
WHEN COALESCE(src.next_dt,SYSDATE) >= tcs.TRX_DATE + INTERVAL '90' DAY
THEN ',sleeping'
END;
解决方法
为什么不每天更新数据?
没有 WHERE
子句(它会限制要更新的行),唯一的连接条件是 ON ( tcs.ROWID = src.rid )
,它始终为真,因为您基本上是在更新同一个表,基于其中的数据非常表。
因此,如果您的问题实际上是“如何每天自动运行此 MERGE
”,那么将其放入将被调度的存储过程中(按 DBMS_SCHEDULER
或更旧(但更简单){ {1}}) 每天运行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。