Foxtable(狐表)用户栏目专家坐堂 → 如何求余额


  共有11739人关注过本帖树形打印复制链接

主题:如何求余额

帅哥哟,离线,有人找我吗?
don
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2012/1/15 16:50:00 [显示全部帖子]

在这个基础上实现即可:

SELECT 商品名称,规格型号,iif(类型='入库',数量,0) AS 入库,iif(类型='出库',数量,0) AS 出库,iif(类型='入库',数量,0) -iif(类型='出库',数量,0) AS 差额 FROM {存货} 

 回到顶部
帅哥哟,离线,有人找我吗?
don
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2012/1/16 8:52:00 [显示全部帖子]

以下是引用lihe60在2012-1-16 8:35:00的发言:
好像是不能求和的。
4楼是要你在那个基础上实现,没要你直接套用!


 回到顶部
帅哥哟,离线,有人找我吗?
don
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2012/1/16 9:08:00 [显示全部帖子]

不是这个结果吗?

图片点击可在新窗口打开查看此主题相关图片如下:ce.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
don
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2012/1/16 9:26:00 [显示全部帖子]

你直接套用4楼的SQL当然不行,在那个基础上求和就是

 回到顶部
帅哥哟,离线,有人找我吗?
don
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2012/1/16 10:33:00 [显示全部帖子]

SELECT 商品名称,规格型号,iif(类型='入库',数量,0) AS 入库,iif(类型='出库',数量,0) AS 出库,iif(类型='入库',数量,0) -iif(类型='出库',数量,0) AS 差额 FROM {存货} 

视图A: 商品名称,规格型号,入库,出库,差额
对此视图分组求和:
SELECT 商品名称,规格型号,sum(入库) AS 入库,sum(出库) AS 出库,sum(差额) AS 差额 FROM (视图A) group by 商品名称,规格型号

 回到顶部
帅哥哟,离线,有人找我吗?
don
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2012/1/16 10:34:00 [显示全部帖子]

如果还是搞不了,建议你:1.钻研SQL;2.老老实实用Fox的办法.

 回到顶部
帅哥哟,离线,有人找我吗?
don
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2012/1/16 14:13:00 [显示全部帖子]

其實俺對SQL也是會一些初級應用,深奧的也不會:

假如後台存在以下數據列:商品名称,规格型号,入库,出库,差额

以下簡單:

SELECT 商品名称,规格型号,sum(入库) AS 入库,sum(出库) AS 出库,sum(差额) AS 差额 FROM {存货} group by 商品名称,规格型号

下面的是根據類型和數量確定:入库,出库,差额

SELECT 商品名称,规格型号,iif(类型='入库',数量,0) AS 入库,iif(类型='出库',数量,0) AS 出库,iif(类型='入库',数量,0) -iif(类型='出库',数量,0) AS 差额 FROM {存货} 


替換就是:

SELECT 商品名称,规格型号,sum(iif(类型='入库',数量,0)) AS 入库,sum(iif(类型='出库',数量,0)) AS 出库,sum(iif(类型='入库',数量,0) -iif(类型='出库',数量,0)) AS 差额 FROM {存货} group by 商品名称,规格型号

 回到顶部
帅哥哟,离线,有人找我吗?
don
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2012/1/16 16:12:00 [显示全部帖子]

Fox之SQLJoinTableBuilder解法也一样高效:

Dim t As Table=Tables(e.Form.name & "_table1")
Dim sql As String

Dim jb As New SQLJoinTableBuilder("查询表1","存货")
jb.AddCols("商品名称","规格型号",True)
jb.AddExp("入库","sum(iif(类型 ='入库',数量,0))")
jb.AddExp("出库","sum(iif(类型 ='出库',数量,0))")
jb.AddExp("差额","sum(iif(类型 ='入库',数量,0)-iif(类型 ='出库',数量,0))")
sql = jb.BuildSQL
t.Fill(sql,True)

 回到顶部