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