如果sum为Null,如何用0替换sum的结果

how to replace the result of sum by 0 if it is Null

我有 3 个表:

每个任务都有成本,一个阶段的成本是其任务的 SUM(成本)。

我想更新项目中每个阶段的成本,我试过这个查询:

UPDATE Phases SET cost = (SELECT sum(cost) FROM Tasks WHERE Tasks.IDprojet = 'xxx' AND Tasks.RefPhase = Phases.RefPhase)

...但这给了我一些正确的值,而其他值是 NULL。我使用了 SUM(COALESCE(cost,0)) 但没有任何改变,也许查询是错误的,或者我必须制作函数来测试 Select 返回的值是否为空或不被更改为 0?

你能帮帮我吗!

你需要在外面使用COALESCE:

UPDATE Phases
SET cost = COALESCE((
    SELECT SUM(cost)
    FROM Tasks
    WHERE Tasks.IDprojet = 'xxx' AND Tasks.RefPhase = Phases.RefPhase
), 0)

如果所有值都为 NULL,SUM 函数将 return NULL。如果没有匹配的行,子查询将 return NULL。这应该处理这两种情况。