我查询了我的日常查询,并尝试使用TD_WEEK_OF_CALENDAR函数将其转换为每周一次,这似乎使所有事情停止了工作,我不太理解。这是一个基本示例,请注意,我已更改了查询,因此它看起来像是在运行一个奇怪的查询,但它显示了发生错误的位置很容易。
我得到的错误是:“查询失败。3706:语法错误:预期在','和'year'关键字之间。但是,子查询运行得很好,如果我删除了该联接,查询运行也很好,所以我有些困惑。
select a.Customer
, TD_WEEK_OF_CALENDAR(ab.DateField) as Week
, z.AvgYearBalance
, avg(ab.Balance) as WeeklyBalance
from Customer a
left join Balances ab on a.Customer=ab.Customer
left join(
select a.Customer
, year(ab.DateField) as Year
, avg(ab.Balance) as AvgYearBalance
from Customer a
left join Balances ab on a.Customer=ab.Customer
group by 1,2
) z on a.Customer=z.Customer
group by 1,2,3
答案 0 :(得分:1)
year
不是Teradata中的内置函数。只有较早的ODBC驱动程序才具有将其自动转换为有效语法的开关,但是从TD14开始不推荐使用,在TD16中已将其删除。它仅适用于普通选择,不适用于视图等,显然派生表也不支持该功能。只需切换到有效的Teradata和Stanadard SQL:
extract(year from ab.DateField) as "Year"
Btw,TD16.20的最新“功能升级1”重新引入了诸如UCASE,CONCAT,YEAR之类的功能,而与连接方式无关:-)