子查询必须返回一行

时间:2019-05-30 04:44:39

标签: sql cloudera impala

当我开始此查询时,出现此错误:

  

AnalysisException:子查询必须返回单行:make_call

查询:

(SELECT round(c1.feb15 + c1.nov15 + c1.dec15) FROM suivisousse.compteur2015)

4 个答案:

答案 0 :(得分:0)

您的内部选择查询select round(c1.feb15+c1.nov15+c1.dec15) from compteur2015返回多个记录。确保内部查询只返回一条有效记录。

答案 1 :(得分:0)

尝试一下。

select c2.compteur, ((c1.feb15+c1.nov15+c1.dec15)*100 / (select round(c1.feb15+c1.nov15+c1.dec15) from compteur2015 c15 where c1.compteur = c15.compteur )) 
from compteur2015 c1, compteur c2 
group by c2.compteur

答案 2 :(得分:0)

不确定要达到的目标。您似乎不需要子查询。

尝试一下:

SELECT
    c2.compteur, 
    (c1.feb15 + c1.nov15 + c1.dec15) * 100 / ROUND(c1.feb15 + c1.nov15 + c1.dec15)
FROM compteur2015 c1
    INNER JOIN compteur c2 
        ON c1.compteur = c2.compteur
GROUP BY
    c2.compteur

答案 3 :(得分:0)

您可能正在尝试编写此代码:

SELECT c2.compteur, 
       ( SUM(c1.feb15 + c1.nov15 + c1.dec15) * 100 / 
         (SELECT SUM(c1.feb15 + c1.nov15 + c1.dec15) FROM compteur2015)
       ) 
FROM compteur2015 c1 JOIN
     compteur c2 
     ON c1.compteur = c2.compteur
GROUP BY c2.compteur;

但是,它更简单地写为:

SELECT c2.compteur, 
       ( SUM(c1.feb15 + c1.nov15 + c1.dec15) * 100 / 
         SUM(SUM(c1.feb15 + c1.nov15 + c1.dec15)) OVER ()
       ) 
FROM compteur2015 c1 JOIN
     compteur c2 
     ON c1.compteur = c2.compteur
GROUP BY c2.compteur;