我有一个存储销售数据的sales表。此表每天更新一次(增量更新)。我正在尝试更新此表中的一列,以计算自sale_date以来的老化。
update sales set aging = (select CASE WHEN sale_date > current_date-28 AND sale_date < current_date -14 THEN '2 - 4 Weeks Ago'
WHEN terminated_at > current_date-14 AND terminated_at < current_date THEN '0 - 2 Weeks Ago'
WHEN terminated_at < current_date-28 THEN '4+ Weeks Ago' ELSE 'Unknown' end as aging from sales) ;我得到无效的操作:无效的查询错误。有人能帮我找出我哪里错了吗?
我使用的是Amazon Redshift DB。
谢谢。
发布于 2018-07-31 18:49:59
您可能只需在更新的rhs端删除select:
UPDATE sales
SET aging = CASE WHEN sale_date > current_date - 28 AND sale_date < current_date - 14
THEN '2 - 4 Weeks Ago'
WHEN terminated_at > current_date - 14 AND terminated_at < current_date
THEN '0 - 2 Weeks Ago'
WHEN terminated_at < current_date - 28
THEN '4+ Weeks Ago'
ELSE 'Unknown' END;但是,我觉得您可能不应该将此信息存储在SQL表中。相反,只要需要,您就可以在选择使用相同的CASE表达式时生成此输出。我这么说的原因是,当您添加新记录,从而添加新的日期信息时,将不得不重新计算此计算列,这可能会带来很大的成本。
https://stackoverflow.com/questions/51611468
复制相似问题