mysql - 如果存在 null 值,SUM 函数将返回 null

标签 mysql sql

我有这个查询

SELECT (SELECT cost FROM table1 t2 WHERE t2.edate=>table1.edate) AS cost
FROM table1
WHERE table1.orderNo = 'CS119484568'

以上查询返回:

cost
4
3
null
null
5

如果任何行有空值,我想获得全部的总和或空值

SELECT SUM((SELECT cost FROM table1 t2 WHERE t2.edate=>table1.edate)) AS cost
FROM table1
WHERE table1.orderNo = 'CS119484568'

上述情况下的预期结果为 NULL。

最佳答案

这是我的尝试:

SELECT
    (SELECT
        case when count(*)=count(cost) then sum(cost) else null end
     FROM table1 t2
     WHERE t2.edate=>table1.edate
    ) AS cost
FROM table1
WHERE table1.orderNo = 'CS119484568'

这是基于 count() 仅计算非空值这一事实。

关于mysql - 如果存在 null 值,SUM 函数将返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51736297/

相关文章:

mysql - Rails Mysql::错误:查询:未连接 Windows 7

php - 将复选框数组值添加到 MySQL 数据库中的多行中

java - 将报告链接到 Java?或者查找在 Paradox 4.5 中应用 BOLD 格式的方法?

mysql - 如何使用连接仅在条件为真时插入?

MySQL 向大表中添加一列的性能

mysql - 使用 join 和 max 更新行

mysql - 库存数量查询SQL

mysql - MySQL UNION 的替代品

php - SQL - 计算 GROUP 中有多少项目也使用 SUM

mysql - 3 表加入 SUM 和 GROUP BY 不起作用