我一直在寻找解决方案,在Mysql中获得多个列(一行)的总和,以获得电力发票每小时的总数?

我一直在寻找解决方案,在Mysql中获得多个列(一行)的总和,以获得电力发票每小时的总数?,mysql,sql,Mysql,Sql,我在下面写了一个查询来获取总和,但它显示了(某些进展)总计为空的两条记录。当我包括下面的所有记录时,它在第4行显示1064错误 select Metering0,Metering1,Metering2,Metering3,Metering4,Metering5,Metering6,Metering7,Metering8,Metering9,Metering10,Metering11,Metering12, Metering13,Metering14,Metering15,Metering16,

我在下面写了一个查询来获取总和,但它显示了(某些进展)总计为空的两条记录。当我包括下面的所有记录时,它在第4行显示1064错误

select 
Metering0,Metering1,Metering2,Metering3,Metering4,Metering5,Metering6,Metering7,Metering8,Metering9,Metering10,Metering11,Metering12,
Metering13,Metering14,Metering15,Metering16,Metering17,Metering18,Metering19,Metering20,Metering21,Metering22
total = (Metering0+Metering1+Metering2+Metering3+Metering4+Metering5+Metering6+Metering7+Metering8+Metering9+Metering10+Metering11+Metering12
+Metering13+Metering14+Metering15+Metering16+Metering17+Metering18+Metering19+Metering20+Metering21+Metering22)
from ireneene_calculationdb.invoice_template_year
它将两条记录的总计显示为
null

对于这些记录,可能至少有一列具有
null
值。在MySQL(和大多数其他RDBMS)中,
1+null
产生
null
。您可以使用
coalesce()
解决此问题:

第4行显示1064错误

column\u alias=
不是有效的MySQL语法(这是SQL Server语法)。您应该将列别名放在表达式之后,可以选择在keyworkd
前面加上
,如:

coalesce(Metering0, 0) + coalesce(Metering1, 0) + coalesce(Metering2, 0) + ... as total 

这种问题是(非常)糟糕设计的症状。数据库表不是电子表格。此外,还缺少逗号
coalesce(Metering0, 0) + coalesce(Metering1, 0) + coalesce(Metering2, 0) + ... as total