子查询必须 return 单行

Subquery must return a single row

当我开始这个查询时,我得到了这个错误:

AnalysisException: Subquery must return a single row: (SELECT round(c1.feb15 + c1.nov15 + c1.dec15) FROM suivisousse.compteur2015)

查询:

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

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

试试这个。

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

不确定您要实现的目标。您似乎不需要子查询。

试试这个:

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

您可能正在尝试编写:

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;