【发布时间】:2014-08-05 07:54:05
【问题描述】:
我有以下疑问:
SELECT SUM(trns_master.trns_advance) FROM trns_master
WHERE trns_company = 1 AND
(trns_rentTrnsptr = 12 OR trns_othersTrnsptr = 12)
以上查询返回金额:假设为10000
然后我有第二个查询:
SELECT SUM(txn_credit) FROM txn_master
WHERE txn_fromLedId = 1 AND txn_fromLedId = 12
因为没有匹配的行,所以返回一个空值。
现在我想要的是从上述两个查询返回的值的总和
为此我使用 COALESCE 函数如下:
SELECT COALESCE(SUM(trns_master.trns_advance), 0) + COALESCE(SUM(txn_master.txn_credit), 0)
FROM trns_master, txn_master WHERE
trns_master.trns_company = 1 AND
txn_master.txn_fromLedId = 1 AND
txn_master.txn_toLedId = 12 AND
(trns_rentTrnsptr = 12 OR trns_othersTrnsptr = 12)
所以从我可以从 COALESCE 定义中了解到,该函数返回第一个 NON-NULL 值,
COALESCE(SUM(trns_master.trns_advance), 0) 应该返回 10000 和
COALESCE(SUM(txn_master.txn_credit), 0) 应该返回 0,因为 SUM(txn_master.txn_credit) 是 null。
但最终结果是0。
我的错误在哪里?
【问题讨论】: