【问题标题】:Teradata join statement syntaxTeradata 连接语句语法
【发布时间】:2019-09-06 21:51:25
【问题描述】:

我收到了以下 sql,在通过 apache calcite 导入时似乎有问题。

SELECT DISTINCT a.abc, t.desc, m.qprs, m.mpn,
  m.ohug, p.tre, p.status
  FROM (table_a m table_b p 
          ON m.mat = p.mat)
          INNER JOIN table_c t ON t.mat = m.mat
  WHERE t.lang = 'E' AND p.plant LIKE '110%'
  ORDER BY p.plant desc;

有详细了解 Teradata 的人可以确认一下,这种语法是否正确?

如果不是,什么是正确的语法?

提前致谢。

【问题讨论】:

  • 这与Teradata无关。如果您的查询不起作用,请先对其进行调试,查看问题所在,然后在此处更新您的帖子以反映该特定问题。不,经过简单检查,语法不正确。 ON 应仅出现在 JOIN 语句中,而不应出现在 FROM 表别名中。

标签: sql syntax teradata


【解决方案1】:

那个语法不正确。

SELECT DISTINCT a.abc, t.desc, m.qprs, m.mpn, m.ohug, p.tre, p.status
FROM table_a m INNER JOIN
---------------^ missing keyword
     table_b p 
     ON m.mat = p.mat INNER JOIN
     table_c t
     ON t.mat = m.mat
WHERE t.lang = 'E' AND p.plant LIKE '110%'
ORDER BY p.plant desc;

括号不是必需的,但应该允许使用。

【讨论】:

    【解决方案2】:

    要添加到 Gordons answer ,关键字 desc 是保留关键字。最好使用 [] 来避免错误。

    SELECT DISTINCT a.abc, t.[desc], m.qprs, m.mpn, m.ohug, p.tre, p.status FROM table_a m INNER JOIN
     table_b p 
     ON m.mat = p.mat INNER JOIN
     table_c t
     ON t.mat = m.mat WHERE t.lang = 'E' AND p.plant LIKE '110%' ORDER BY p.plant desc;
    

    【讨论】:

    • [] 是 T-SQL 特定语法,Teradata 支持标准 SQL "desc"
    猜你喜欢
    • 2012-03-03
    • 2015-11-22
    • 2020-06-18
    • 2021-07-28
    • 2017-03-31
    • 1970-01-01
    • 2014-11-18
    • 2012-02-09
    • 2017-09-26
    相关资源
    最近更新 更多