当列乘以时SQL不返回值
我的数据库表中有3列,我需要乘以列itm_count & itm_price并输出给定id(itm_id)的总数。当列乘以时SQL不返回值
SELECT sum(itm_price * itm_count) as total FROM ods_temporder WHERE itm_id='11'
我试图用上面的sql查询来做到这一点,但结果为空。这里似乎是什么问题?
这会给你什么?
SELECT itm_price, itm_count FROM ods_temporder WHERE itm_id='11'
是任itm_price
或itm_count
NULL?你有行itm_id
= 11?
itm_price和itm_count在itm_id = 11时包含什么? 这是SQL Server吗?如果是这样你可以使用ISNULL处理是否itm_price或itm_count为null
使用COALESCE()而不是ISNULL()。这是ANSI标准,所以也适用于其他供应商。语法和语义是相同的,所以没有理由继续使用ISNULL()。 – 2009-12-01 22:10:59
尝试:
SELECT SUM(COALESCE(itm_price, 0) * COALESCE(itm_count, 0)) as total
FROM ods_temporder
WHERE itm_id='11'
COALESCE是具有NULL值处理的ANSI标准 - 如果itm_price
或itm_count
是零,零将被使用这种情况作为价值。否则,要么没有itm_id
列的值为11的行,要么在错误的列中查找11值。
@OMG Ponies- :)感谢这个词很有帮助。 – pier 2009-12-01 20:59:55
样本数据和预期结果,并给我们真实的样本数据。这总能帮助我们。 – JonH 2009-12-01 20:53:55
@pier - 请更新实际解决方案的内容,并将其作为回答或作为对您问题的编辑发布,以便将来的堆栈溢出运营商可以了解可能发生的情况。现在解决方案被埋在gbn的答案评论中。 – 2009-12-01 21:02:42
或者让gbn的答案接受? – 2009-12-01 21:03:25