Sql TERADATA:连接表

Sql TERADATA:连接表,sql,calendar,inner-join,teradata,Sql,Calendar,Inner Join,Teradata,我有一个表,我已经生成,其中的信息汇总到每天的总量 我有第二个表,可以被视为日历表,它允许我在加入表时获取聚合的周数 表中的日期均为整数,例如20130501 YYYYMMDD 当我在下面创建SQL时,它工作得很好,但是现在我想安排这个脚本每周运行一次,以获得前一周的结果,结果出现了一个错误 剧本写得很好 脚本失败 我在第二个脚本中得到的错误消息是 Teradata ODBC Teradata驱动程序语法错误:应介于和“-”之间 谢谢大家抽出时间 这几天来一直困扰着我,DAYOFWEEK不是内置

我有一个表,我已经生成,其中的信息汇总到每天的总量 我有第二个表,可以被视为日历表,它允许我在加入表时获取聚合的周数

表中的日期均为整数,例如20130501 YYYYMMDD

当我在下面创建SQL时,它工作得很好,但是现在我想安排这个脚本每周运行一次,以获得前一周的结果,结果出现了一个错误

剧本写得很好

脚本失败

我在第二个脚本中得到的错误消息是

Teradata ODBC Teradata驱动程序语法错误:应介于和“-”之间

谢谢大家抽出时间
这几天来一直困扰着我,DAYOFWEEK不是内置的Teradata函数。 有一个DAYOFWEEK ODBC函数,但您必须打开ODBC驱动程序中的标志才能使用它

根据您发布的版本,可能会有一个像TD_DAY_OF_WEEK这样的UDF,或者您可以编写自己的SQL-UDF。否则,请尝试以下操作:

BETWEEN CAST(CURRENT_DATE - ((CURRENT_DATE - DATE '0001-01-07') MOD 7) - 6 AS INT) + 19000000
    AND CAST(CURRENT_DATE - ((CURRENT_DATE - DATE '0001-01-07') MOD 7)     AS INT) + 19000000
    SELECT *
    FROM TABLE_1 as sample
    INNER JOIN TABLE_2 as calendar
    ON sample.day = calendar.day
    -- >= Previous Monday Last week
    WHERE sample.day >= CAST(CAST(((DATE-DAYOFWEEK(DATE)-5) (FORMAT 'YYYYMMDD')) AS CHAR(8)) AS INT)
   --  <= Previous Sunday Last week
    AND   sample.day <= CAST(CAST(((DATE-DAYOFWEEK(DATE)+ 1) (FORMAT 'YYYYMMDD')) AS CHAR(8)) AS INT) 
BETWEEN CAST(CURRENT_DATE - ((CURRENT_DATE - DATE '0001-01-07') MOD 7) - 6 AS INT) + 19000000
    AND CAST(CURRENT_DATE - ((CURRENT_DATE - DATE '0001-01-07') MOD 7)     AS INT) + 19000000