我有一个表,它有等列
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 *;