3706 Syntax error: expected something between an integer and ')'
3706 Syntax error: expected something between an integer and ')'
我正在努力找出问题所在,我的部分代码如下所示
(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”和“)”括号之间放什么?有什么办法可以解决吗?
看起来你有一个额外的 ) 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" 值是多少?除非您将该字段包含在子 select.
中,否则查询将不会按原样工作
我正在努力找出问题所在,我的部分代码如下所示
(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”和“)”括号之间放什么?有什么办法可以解决吗?
看起来你有一个额外的 ) 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" 值是多少?除非您将该字段包含在子 select.