如何创建程序每天更新

问题描述

我需要改变这个脚本,让它每天更新数据,因为每天插入新数据

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}}) 每天运行。