更新语句语法 (PostgreSQL-Redshift)
Posted
技术标签:
【中文标题】更新语句语法 (PostgreSQL-Redshift)【英文标题】:Update statement Syntax (PostgreSQL-Redshift) 【发布时间】:2018-01-09 05:37:21 【问题描述】:在时间维度中,我们添加了额外的两列,分别称为 Fiscal Year 和 Fiscal Year Month,它们将被填充。在我们的案例中,会计年度从 9 月 1 日至 8 月 31 日结束。(例如 - 2017 年 9 月 1 日至 2018 年 8 月 31 日为 2018 财年)。我正在尝试在 PostgreSQL 中编写更新语句。 (逻辑 - 当 X.monthname 在 ('September','October','November','December') 然后 (X.Year+1) else X.Year end) - 但看起来我无法得到正确的语法。你能帮忙建造吗?
我们的 Time 表中有 Date、Year、MonthName 列,可用于更新语句。
谢谢。
【问题讨论】:
不要将日期存储在单独的组件中(月、年等)。相反,只需将您的日期存储在单个日期/日期时间列中。继续当前的设计只会在以后引起问题。 你能提供你正在使用的确切语法和你得到的错误吗?UPDATE testtable SET fiscalyear = CASE WHEN month IN ('September','October','November','December') THEN year+1 ELSE year END
应该可以工作,尽管蒂姆有合理的担忧。 sqlfiddle
但是我们需要在日期字段上放置一个连接条件吗?我尝试执行上述但收到错误(单查询多行)
嘿,谢谢它成功了...我能够更新会计年度。现在我想更新财政年度月份。上述更新语句有效。
是哪一个? Redshift 还是 Postgres?这两个是完全不同的
【参考方案1】:
我认为update
看起来像:
update x
set Year = Year + 1
where x.monthname in ('September', 'October', 'November', 'December') ;
【讨论】:
以上是关于更新语句语法 (PostgreSQL-Redshift)的主要内容,如果未能解决你的问题,请参考以下文章