以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  SQL后台统计问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=48608)

--  作者:L88919138
--  发布时间:2014/4/2 7:55:00
--  SQL后台统计问题

设置如下代码,经实验发现如运杂费列里未输入任何数据,其他列有数据,这样后台无法统计符合条件的数据,求大师们指教应如何改进代码?

 

Dim cmd As new SQLCommand

cmd.c

For Each dr As DataRow In DataTables("存货设置表").DataRows

    cmd.CommandText = "Select sum(出仓数量 * 含税单价) - sum(运杂费) - sum(收款金额) - sum(长短款)  - sum(返利)   From {销售收款统计表}  Where 客户名称 = \'" & dr("客户名称") & "\' and 对账日期 is not null and 合同录入日期 <= \'" & User.ExtendedValues("结束日期") & "\'"

    If cmd.CommandText IsNot Nothing

        dr("销售表金额") = cmd.executescalar

    Else

        dr("销售表金额") = 0

    End If

Next


--  作者:L88919138
--  发布时间:2014/4/2 7:58:00
--  
补充,只有上述各列中至少有一个数字,才会将符合条件的数据统计出来。
--  作者:Bin
--  发布时间:2014/4/2 8:24:00
--  
因为10-空 得空 在SQL中是这样的.

1.简便的方法,不允许为空.空值你填写0,或者设置默认值为0

2.修改SQL语句  例如  (case sum(运杂费) when sum(运杂费) is null then 0 else then sum(运杂费) end)- (case sum(收款金额) when sum(收款金额) is null then 0 else then sum(收款金额))

--  作者:有点甜
--  发布时间:2014/4/2 9:01:00
--  

 用isnull函数,例如

 

isnull(sum(运杂费), 0)


--  作者:Bin
--  发布时间:2014/4/2 9:02:00
--  
以下是引用有点甜在2014-4-2 9:01:00的发言:

 用isnull函数,例如

 

isnull(sum(运杂费), 0)

赞一个,这么好的东西不拿出来用,记错成ACCESS的了.
--  作者:aaticor
--  发布时间:2014/4/2 9:49:00
--  

应该是sum(isnull(运杂费,0))


--  作者:L88919138
--  发布时间:2014/4/2 11:14:00
--  
多谢两位大师指点,忘记isnull函数使用。