【问题标题】:Teradata Select where date = previous workday/weekdayTeradata Select 其中日期 = 前一个工作日/工作日
【发布时间】:2018-10-26 22:29:58
【问题描述】:

使用 Teradata 15.1x

我正在尝试选择前一个工作日的数据。我可以使用

获得前一天
cast(cast(cast(a.date_dim_ck as varchar(13)) as date format 'yyyymmdd') as date format 'mm-dd-yyyy') = current_date - 1

但是当我尝试在周一回顾 3 天而不是 1 天时(要获取周五的数据,请参见下文),我得到“[3707] 语法错误,预计在')' 和 '='。”

where case 
when td_day_of_week(current_date)<>2 
then
cast(cast(cast(a.date_dim_ck as varchar(13)) as date format 'yyyymmdd') as date format 'mm-dd-yyyy') = current_date - 1
else
cast(cast(cast(a.date_dim_ck as varchar(13)) as date format 'yyyymmdd') as date format 'mm-dd-yyyy') = current_date - 3

我做错了什么?

【问题讨论】:

  • 您是否缺少 END 关键字和您正在检查的条件?它应该看起来像 WHERE CASE WHEN Condition1 THEN Result1 END = expectedResult

标签: sql teradata teradata-sql-assistant


【解决方案1】:

您只能使用 case 语句根据其他条件确定字段的值。请参阅下面的语法。

where cast(cast(cast(a.date_dim_ck as varchar(13)) as date format 'yyyymmdd') as date format 'mm-dd-yyyy') = case  
    when td_day_of_week(current_date)<>2 
    then
     current_date - 1
    else
     current_date - 3
    end 

【讨论】:

  • 如果问题 = 解决了,那么你 = 向导!结束 谢谢,丹尼尔!
猜你喜欢
  • 2022-01-12
  • 2014-11-12
  • 1970-01-01
  • 2017-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多