【问题标题】:CASE statement in DateDiff (Amazon Redshift)DateDiff (Amazon Redshift) 中的 CASE 语句
【发布时间】:2017-03-24 15:28:21
【问题描述】:

我正在尝试在 datediff 函数中实现 CASE 语句,但它会抛出 ERROR: syntax error at or near "case"

即使使用如下简化查询,也会出现错误:

select datediff(CASE WHEN 1=1 THEN 'month' ELSE 'month' end,'2009-01-01','2009-12-31') as nummonths;

函数中不能包含CASE语句吗?

【问题讨论】:

  • 上述查询中不需要大小写。你想达到什么目的?
  • @RedshiftGuy 你是对的,这里的case 只是为了保持初始结构!

标签: sql amazon-redshift


【解决方案1】:

Redshift is a keyworddatediff() 的第一个参数。所以,你不能这么简单地做你想做的事。

改为:

select (case when 1=1
             then datediff(month, '2009-01-01', '2009-12-31')
             else datediff(month, '2009-01-01', '2009-12-31')
        end) as nummonths;

我认为这是过于简化的代码,因为显然在此查询的任何版本中都不需要 case

【讨论】:

  • 是的,简化了,这里使用的case只是为了保持类似的结构。非常感谢您的帮助戈登!
猜你喜欢
  • 2019-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多