【发布时间】:2014-02-27 17:44:15
【问题描述】:
我目前正在使用 postgres 9.1,并且正在尝试更新表以将不正确的值设置为 null。特别是,我希望将两个观察之间的月数不等于 8 的所有观察设置为 NULL,因为我之前对“变量”的计算将无效。
我尝试编写条件更新,但没有成功。我正在处理大量的观察结果(3.5m +),并且必须多次循环这个过程,所以如果可以限制更新的数量,那就太好了。谢谢!
UPDATE table
SET variable = CASE WHEN
(
SELECT
(date_part('year',age(datadate,(lag(datadate, 8) OVER W))) * 12) + date_part('month',age(date_trunc('month',datadate),(lag(date_trunc('month',datadate), 8) OVER W)))
FROM table
WINDOW W AS (PARTITION BY permno ORDER BY datadate)
) != '8'
THEN NULL
ELSE variable END;
【问题讨论】:
-
显示样本数据和想要的结果
标签: postgresql sql-update postgresql-9.1