3706语法错误:预期在整数和')'之间

时间:2020-01-29 13:04:57

标签: sql database group-by subquery teradata

我正在努力找出问题所在,我的部分代码看起来像这样

(sel no_2, sum(L) from (
                sel no_2, colB, count(distinct(colC))
                from dbA.tblP as p
                    join dbB.tblI as i on p.id = i.id and p.no = i.no
                    join dbB.tblT as t on i.no_2 = t.no_2
                    join dbA.mp_tblA as a on t.no_2 = a.no_2) l 
                    ) as l
group by 1) as l        

Teradata指向其中与group by 1)对齐的行。我应该在“ 1”和“)”之间加上什么?有什么办法解决吗?

1 个答案:

答案 0 :(得分:0)

似乎您那里有一个额外的) l,这会导致语法错误。试试这个:

SELECT no_2, SUM(L) 
FROM (
  SELECT no_2, colB, COUNT(DISTINCT colC) AS no_colC
  FROM dbA.tblP AS p
  INNER JOIN dbB.tblI AS i ON p.id = i.id AND p.no = i.no
  INNER JOIN dbB.tblT AS t ON i.no_2 = t.no_2
  INNER JOIN dbA.mp_tblA AS a ON t.no_2 = a.no_2
) AS l
GROUP BY 1

除评论外,还有一些可读性建议:

  • 使用SELECT代替SEL
  • 指定INNER JOIN而不是JOIN
  • 如果您打算使用count(distinct(colC)),请给它起一个别名,例如no_colC

此外,您在SUM(L)中引用的“ L”值是什么?除非您在子选择中包括该字段,否则查询将无法原样工作。