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')
大家好,我要做一个将一些列加在一起的查询。
$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')