0

使用 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

我究竟做错了什么?

4

1 回答 1

0

您只能使用 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 
于 2018-05-16T19:15:46.957 回答