以文本方式查看主题

-  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=50088)

--  作者:shixia
--  发布时间:2014/4/29 10:43:00
--  SQL语句求助

有一表A,字段为:客户,数量1,数量2;想使用SQLCommand语句,求出 Sum(数量1)-SUM(数量2 )

我写代码如下:

Dim cmd As New SQLCommand
Dim
dt As DataTable
cmd.CommandText = "SELECT DISTINCT 客户,数量1,数量2,数量1-数量2 As 余额 From {A}"
dt = cmd.ExecuteReader()

 

或者

Dim val As Integer
Dim cmd As New SQLCommand
cmd.CommandText = "Select 客户,Sum(数量1)-Sum(数量2)  From {A} "
val  = cmd.ExecuteScalar()

 

这两种代码运行后都不能计算出正确的余额(余额都为0)



--  作者:Bin
--  发布时间:2014/4/29 10:45:00
--  
请上例子 SQL的SUM默认是会过滤空值的吧
--  作者:Bin
--  发布时间:2014/4/29 10:47:00
--  
是不是你没有保存?
--  作者:shixia
--  发布时间:2014/4/29 10:57:00
--  
保存了,但是可能有空值,数量1或数量2都有一方有空值,但是不会同时出现空值
--  作者:Bin
--  发布时间:2014/4/29 10:57:00
--  
空值也会计算的啊,你上个例子看看.
--  作者:shixia
--  发布时间:2014/4/29 11:03:00
--  

点击按钮后,张三余额正确,李四余额不正确 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb

[此贴子已经被作者于2014-4-29 11:19:03编辑过]

--  作者:Bin
--  发布时间:2014/4/29 11:09:00
--  
Select 客户,Sum(应收款)-Sum(应付款) as 款 From {表A} group by 客户
--  作者:shixia
--  发布时间:2014/4/29 15:52:00
--  

搞定,代码如下

Select 客户,Sum(IIF(应收款 is Null ,0,应收款))-Sum(IIF(应付款 is Null,0,应付款)) as 款 From {表A} group by 客户