Postgres-用相同表的子查询更新表,表示列引用不明确



我有一个表,它有等列

id | due_date | sent_at | due_days | calculate_due_date

有些行的列calculated_due_date为空,我想使用case语句使用表中现有列的计算来更新这些行。以下是我写的查询,但我认为我的别名有误,我需要一些帮助和解释来找到这个查询中的问题,提前谢谢。

UPDATE outgoinginvoice o2
SET o2.calculated_due_date = calculated.calculated_due_date
FROM (SELECT o.calculated_due_date,
CASE
WHEN o.due_date IS NULL THEN o.sent_at + CAST(o.due_days || ' days' AS INTERVAL)
ELSE o.due_date
END AS calculated_due_date
FROM outgoinginvoice as o) as calculated
WHERE o2.calculated_due_date IS NULL

我收到的错误是,

列引用"calculated_due_ date";不明确

UPDATE outgoinginvoice o2
SET calculate_due_date = calculated.calculated_due_date
FROM (select
CASE
WHEN o.due_date IS NULL THEN o.sent_at + CAST(o.due_days || ' days' AS INTERVAL)
ELSE o.due_date
END AS calculated_due_date
FROM outgoinginvoice  o) calculated
WHERE o2.calculate_due_date IS NULL
returning *;

相关内容

最新更新