我有一个表格,我已经生成了每天将信息汇总到聚合的表格 我有一个第二个表可以被认为是一个日历表,它允许我在加入表时获取聚合的周数
表中的日期都是整数,例如20130501(YYYYMMDD)
当我在下面创建SQL(通用)时,它工作正常,但现在我想安排这个脚本每周运行一次以获得前一周并收到错误
脚本正常运行
SELECT *
FROM TABLE_1 as sample
INNER JOIN TABLE_2 as calendar
ON sample.day = calendar.day
WHERE sample.day >= 20130501
AND sample.day <= 20130507
脚本失败
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)
我在第二个脚本上的错误消息是
Teradata ODBC Teradata驱动程序语法错误:期待&#39;)&#39;和&#39; - &#39;
谢谢大家的时间 几天来它一直困扰着我
答案 0 :(得分:3)
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