这是我的查询:
SELECT (contract_value + amendment_value) AS total_value
FROM contracts
ORDER BY total_value DESC
当我运行它时,每一行的结果为NULL
。为什么会这样?
每行都具有contract_value
或amendment_value
,但不能同时具有两者。没有值的地方为NULL。这可能是问题吗? (我在文档中找不到任何建议)。如果是这样,我该如何解决?
答案 0 :(得分:3)
使用COALESCE
:
SELECT
COALESCE(contract_value, amendment_value) AS total_value
FROM contracts
ORDER BY total_value DESC;
答案 1 :(得分:1)
您可以使用coalesce()
-由于两个值中的任何一个都为null,所有值都显示为null-如果值为null,则任何计算都将返回null,因此在这种情况下,您必须将null替换为0 >
SELECT coalesce(contract_value,0) + coalesce(amendment_value,0) AS total_value
FROM contracts
ORDER BY total_value DESC