以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- SQL后台统计问题 (http://foxtable.net/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的发言:
赞一个,这么好的东西不拿出来用,记错成ACCESS的了.
用isnull函数,例如
isnull(sum(运杂费), 0) |
-- 作者:aaticor -- 发布时间:2014/4/2 9:49:00 -- 应该是sum(isnull(运杂费,0)) |
-- 作者:L88919138 -- 发布时间:2014/4/2 11:14:00 -- 多谢两位大师指点,忘记isnull函数使用。 |