SUM 日期内的多列

SUM multiple columns within date

大家好,我要做一个将一些列加在一起的查询。

$sqlannoprima = "SELECT fascia_prezzo,data,giorno,
   SUM (a1,a2,a3,a4,a5,a6,a7,a8) as atot, 
   SUM (g1,g2,g3,g4,g5,g6,gtesi,gg) as gtot,
   SUM (f1,f2,f,3,f4) as ftot, 
   SUM (lt1,lt2,lt3,lt4,ltg) as lttot,
   FROM giorni 
   WHERE STR_TO_DATE(giorno, '%d/%m/%Y')- INTERVAL 1 YEAR BETWEEN 
   STR_TO_DATE('" . $d1 . "', '%d/%m/%Y')- INTERVAL 1 YEAR 
   AND STR_TO_DATE('" . $d2 . "', '%d/%m/%Y')- INTERVAL 1 YEAR 
   GROUP BY giorno 
   ORDER BY STR_TO_DATE(giorno, '%d/%m/%Y')- INTERVAL 1 YEAR";

但是 SQL returns 当我尝试打印结果时出错。

Notice: Trying to get property of non-object in E:\EasyPHP\data\localweb\cdm\stats.php on line 377

这是第 377 行:

$risultatoannoprima = $queryannoprima->num_rows;

我错过了什么? 非常感谢

您需要删除 sql 中 lttot 之后的最后一个 , 还有,最好直接用(INTERVAL 1 YEAR)代替INTERVAL 1 YEAR

  $sqlannoprima = "SELECT fascia_prezzo,data,giorno,
   SUM (a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8) as atot, 
   SUM (g1 + g2 + g3 + g4 + g5 + g6 + gtesi + gg) as gtot,
   SUM (f1 + f2 +f3 + f4) as ftot, 
   SUM (lt1 + lt2 + lt3 + lt4 + ltg) as lttot
   FROM giorni 
   WHERE STR_TO_DATE(giorno, '%d/%m/%Y')- (INTERVAL 1 YEAR) BETWEEN STR_TO_DATE('" . $d1 . "', '%d/%m/%Y')- (INTERVAL 1 YEAR) AND STR_TO_DATE('" . $d2 . "', '%d/%m/%Y')- (INTERVAL 1 YEAR) GROUP BY giorno 
   ORDER BY (STR_TO_DATE(giorno, '%d/%m/%Y')- (INTERVAL 1 YEAR))";

SUM() 是一个聚合函数,它对求和,对求和使用+,例如:

(f1 + f2 + f3 + f4)  as ftot

SUM(f1 + f2 + f3 + f4) as ftot

如果你想对行和列求和

SELECT fascia_prezzo,data,giorno,SUM(a1) as a1,SUM(a2) as a2,SUM(a3) as a3,SUM(a4) as a4,SUM(a4) as a4,SUM(a5) as a5,SUM(a6) as a6,SUM(a7) as a7,SUM(a8) as a8,(SUM(a1) + SUM(a2) + SUM(a3) + SUM(a4) + SUM(a5) + SUM(a6) + SUM(a7) + SUM(a8)) as atot FROM giorni
WHERE STR_TO_DATE(giorno, '%d/%m/%Y') BETWEEN STR_TO_DATE('" . $d1 . "', '%d/%m/%Y') AND STR_TO_DATE('" . $d2 . "', '%d/%m/%Y')
GROUP BY fascia_prezzo,data,giorno
ORDER BY STR_TO_DATE(giorno, '%d/%m/%Y')