将行的总和计算到列中

Calculating sum of row into a column

我有点困惑,为什么我的号码不相加,但它们似乎只是堆叠在一起。我做了一些研究并试图将我的数据转化为数字,但似乎没有给我想要的结果。有任何想法吗? 图片提供的是我执行时的结果示例。 Other是Table中的数据。 [女士 SQL 2019]

Result1 Table Data

--这是我到目前为止想出的(注意:我还有更多的列要添加到 100+)--

select PartNumber, sum(cast(a01b + a02a as int)) 
as total
from bincount
group by PartNumber

Mysql查询-计算文件id数

select file_id , 
       count(ID) 
from table 
group by file_id 
ORDER BY ID DESC limit 30;

您需要检查两列的数据类型,以及它们是否可以为空,因为 NULL + 17 会给您 NULL,而不是 17。

对其中​​包含 NULL 的许多行求和,总和将远低于您的预期。

您可能被迫使用 COALESCE

进行写作
SELECT SUM(
         COALESCE(a20a, 0) + COALESCE(a20b, 0)
       ) AS total

或者,但这应该不是必需的,

         COALESCE(CAST(a20a AS INT), 0) + COALESCE(CAST(a20b AS INT), 0)

或者你可以在SUM后面加上:

SELECT COALESCE(SUM(a20a),0) + COALESCE(SUM(a20b),0)

现在 NULL 值将被忽略(NULL + 5 + 10 为 NULL,但 SUM(5, NULL, 10) 为 15),除非 整列 完全由 NULL 组成(在本例中,SUM returns NULL 而不是 0); COALESCE 解决了这种边缘情况。如果您确定每一列中至少有一个非 NULL,则可以不使用 COALESCE。