Redshift - 更新 Redshift 数据库中的特定列
Redshift - Updating a specific column in Redshift DB
我有一个销售 table 存储销售数据。 table 每天更新一次(增量更新)。我正在尝试更新此 table 中的其中一列以计算自 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 数据库。
谢谢。
您可能只需删除更新右侧的 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 table 中。相反,您可以在需要时使用相同的 CASE
表达式 select 生成此输出。我之所以这样说,是因为当您添加新记录并因此添加新日期信息时,必须重新计算此计算列,而这可能代价高昂。
我有一个销售 table 存储销售数据。 table 每天更新一次(增量更新)。我正在尝试更新此 table 中的其中一列以计算自 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 数据库。
谢谢。
您可能只需删除更新右侧的 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 table 中。相反,您可以在需要时使用相同的 CASE
表达式 select 生成此输出。我之所以这样说,是因为当您添加新记录并因此添加新日期信息时,必须重新计算此计算列,而这可能代价高昂。