SUM 是SQL语句中的标准求和函数,如果没有符合条件的记录,那么SUM函数会返回NULL。但多数情况下,我们希望如果没有符合条件记录的情况下,我们希望它返回0,而不是NULL,那么我们可以使用例如下面的方法来处理:SELECT COALESCE(SUM(field1),0) FROM table1 WHERE field2 > 100行了,这下就不用费事去处理返回结果是否为NULL的情况了。COALESCE 函数的意思是返回参数列表中第一个为空的值,该方法允许传入多个参数,该函数也是SQL中的标准函数。

解决方案 »

  1.   

    刚才看错了 http://sulong.me/2009/06/08/msql_return_one_row_when_sum
    不过楼主可以用一个子查询解决啊
      

  2.   

    多谢回复。
    问题是我根本不想让它出现在结果集中。
    想了一下,只能通过对“CargoId”进行空串判断来实现了。
    PS:数据库中明明是NULL用C#取到前台来却成了空串""。
    PSS:当前的解决方案不够优雅,还是期待能够在数据库端解决。
      

  3.   


    现在这样写:
    SELECT * FROM (SELECT CargoId,COALESCE(SUM(Quantity),0) AS sumQuantity,COALESCE(SUM(Amount),0) AS sumAmount FROM vw_outgo_detail WHERE (OGDate BETWEEN '2013-12-12 0:00:00' AND '2013-12-14 23:59:59') AND CargoId='211404') A WHERE CargoId IS NOT NULL其实这里COALESCE函数不是必须的,但写上比较稳妥。