首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Case when with else for每个'When‘条件

Case when with else for每个'When‘条件
EN

Stack Overflow用户
提问于 2018-08-26 15:23:00
回答 1查看 154关注 0票数 0

我有一个日期格式不同的表格。我正在尝试写下面的查询,它的逻辑好像部门是A,如果日期等于01-Oct-2010它是空的,否则保持原始日期的格式更改。我正在用Impala执行它。有多种日期格式,如下所示:

代码语言:javascript
复制
M/d/yyyy
MM/d/yyyy
dd-MM-yyyy

我的查询是这样的。

代码语言:javascript
复制
 select   
 CASE WHEN y.dept='MDM'  
    CASE  WHEN 
     a.date=from_unixtime(unix_timestamp(a.date,'M/d/yyyy'),'M/d/yyyy') 
     AND from_unixtime(unix_timestamp(a.date, 
    'M/d/yyyy'),'yyyy-MM-dd HH:mm:ss') ='10-01-2010 00:00:00' THEN null
                 ELSE from_unixtime(unix_timestamp(a.date, 
'M/d/yyyy'),'yyyy-MM-dd HH:mm:ss') 
 else
     WHEN a.date=from_unixtime(unix_timestamp(a.date, 
    'MM/dd/yyyy'),'MM/dd/yyyy')   
    AND from_unixtime(unix_timestamp(a.date, 'MM/dd/yyyy'),'yyyy-MM-dd 
   HH:mm:ss') ='10-01-2010 00:00:00' THEN null
   ELSE from_unixtime(unix_timestamp(a.date, 'MM/dd/yyyy'),'yyyy-MM-dd 
   HH:mm:ss') 
End 

Case WHEN a.date=from_unixtime(unix_timestamp(a.date, 
'M/dd/yyyy'),'M/dd/yyyy') 
AND from_unixtime(unix_timestamp(a.date, 'M/dd/yyyy'),'yyyy-MM-dd 
HH:mm:ss') ='10-01-2010 00:00:00' THEN null
ELSE from_unixtime(unix_timestamp(a.date, 'M/dd/yyyy'),'yyyy-MM-dd 
HH:mm:ss') End End

FROM Table INNER JOIN Table Y
ON y.id=a.id WHERE y.dept='MDM'

我正在比较它匹配的A.date -If的日期格式

代码语言:javascript
复制
from_unixtime(unix_timestamp(a.date,'M/d/yyyy'),'M/d/yyyy')

代码语言:javascript
复制
from_unixtime(unix_timestamp(a.date, 'M/d/yyyy'),'yyyy-MM-dd HH:mm:ss') matches 1-Oct-2010 

则为null,否则保留原始日期,格式更改为'yyyy-MM-dd HH:mm:ss‘。

问题是我的Case语句抛出了错误。我可以用最后一个Else语句正确地运行所有的case,但这里我需要一个ELSE for date,因为我的日期格式不同。最后的单个ELSE将使我的大多数日期格式无法识别,并给出一个空值。纠正此case语句的任何输入都将很有帮助

EN

回答 1

Stack Overflow用户

发布于 2018-08-26 15:49:03

假设这里应用了布尔lazy/short-circuit evaluation,并假设错误是从from_unixtime()函数抛出的,您可以先检查unix_timestamp()的结果是否有效,然后再将该结果传递给from_unixtime(),这样就可以避免错误。

例如,CASE WHEN unix_timestamp(a.date,'M/d/yyyy') > 0 AND a.date=from_unixtime(unix_timestamp(a.date,'M/d/yyyy'),'M/d/yyyy') ...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52024072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档